2012-07-18 62 views
5

这里是我得到NSNotification EXC_BAD_ACCESS

Thread 1:EXC_BAD_ACCESS (code=2, address=0xb7ffffc) 

在此行中

[[NSNotificationCenter defaultCenter] postNotificationName:AsyncImageLoadDidFinish 
                 object:target 
                 userInfo:[[userInfo copy] autorelease]]; 

在AsyncImageView.m文件中的错误。

该错误会停止代码,但如果我继续在调试器中冻结Xcode并将其关闭。我该如何解决这个问题?

+0

你怎么申报'userInfo'? – Kjuly 2012-07-18 14:24:20

+0

'\t \t的NSMutableDictionary * USERINFO = [的NSMutableDictionary dictionaryWithObjectsAndKeys: \t \t \t \t \t \t \t \t \t \t图像,AsyncImageImageKey, \t \t \t \t \t \t \t \t \t \t URL,AsyncImageURLKey, \t \t \t \t \t \t \t \t \t \t零]' – BigT 2012-07-18 14:29:27

回答

3

尝试下面的代码,它应该没问题:

NSDictionary * userInfo = [NSDictionary dictionaryWithObjectsAndKeys:..., nil]; 
[[NSNotificationCenter defaultCenter] postNotificationName:AsyncImageLoadDidFinish 
                object:target 
                userInfo:userInfo]; 

或:

NSDictionary * userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:..., nil]; 
[[NSNotificationCenter defaultCenter] postNotificationName:AsyncImageLoadDidFinish 
                object:target 
                userInfo:userInfo]; 
[userInfo release]; 
+0

这一工程,但我也有一个新的AsyncImagView.m而行成了这个'[NSNotificationCenter defaultCenter] postNotificationName:AsyncImageLoadDidFinish \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t object:_target \t \t \t \t \t \t \t \t \t \t \t \t \t \t用户信息:[USERINFO复制]自动释放];' – BigT 2012-07-18 15:21:14

+0

@BigT对不起,我不是你said..Have你解决这个问题很清楚? – Kjuly 2012-07-18 15:26:26

+0

是的,我有。这条线的工作,但我更新了AsyncImageView.m,而该行在那里。两者都有效。 – BigT 2012-07-18 15:31:32

15

在初始化你需要注册,并在dealloc中,你需要取消注册!

-(void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:AsyncImageLoadDidFinish object:nil]; 

OR

- (void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
}