Ios NSNotificationCenter EXC\u使用addObserver时访问错误?
我正在试图弄清楚为什么我的应用程序中的addObserver调用会在应该调用其选择器时导致EXC_BAD_访问。让我进一步解释一下,我在调用MFMessageComposeView的方法中调用addObserver,然后在第三方库ShareKit中为“didFinish”通知添加一个观察者。现在,无论何时调用addObserver的选择器,都会引发EXC_BAD_访问。另外,我的addObserver在NSObject类中,如果这有什么区别的话 这是我用于addObserver的代码:Ios NSNotificationCenter EXC\u使用addObserver时访问错误?,ios,exc-bad-access,sharekit,nsnotificationcenter,Ios,Exc Bad Access,Sharekit,Nsnotificationcenter,我正在试图弄清楚为什么我的应用程序中的addObserver调用会在应该调用其选择器时导致EXC_BAD_访问。让我进一步解释一下,我在调用MFMessageComposeView的方法中调用addObserver,然后在第三方库ShareKit中为“didFinish”通知添加一个观察者。现在,无论何时调用addObserver的选择器,都会引发EXC_BAD_访问。另外,我的addObserver在NSObject类中,如果这有什么区别的话 这是我用于addObserver的代码:
NSString *moredetailedshareText = [NSString stringWithFormat:@"Hey"];
[SHKTextMessage shareText:moredetailedshareText];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(SHKSharerFinished:) name:@"SHKFinishedCall" object:nil];
这是ShareKit中的postNotification调用:
- (void)sharerFinishedSending:(SHKSharer *)sharer
{
NSLog(@"finishedsending");
[[NSNotificationCenter defaultCenter] postNotificationName:@"SHKFinishedCall" object:sharer];
if (!sharer.quiet)
[[SHKActivityIndicator currentIndicator] displayCompleted:SHKLocalizedString(@"Saved!")];
}
是什么原因导致这不起作用
谢谢 如果在发布通知时发生崩溃,则解决方案显然是已发布的目标
NSNotificationCenter不保留已注册的观察员。您必须确保该观察者在注册时仍处于活动状态,并且在发布之前已取消注册。是否打开了?可能ShareKit正在释放一些已经发布的内容,您是否正在使用ARC?没有ShareKit没有使用ARC。我还没有打开僵尸,但我认为这不会有帮助。我没有问ShareKit是否使用ARC,我是问你的构建中是否启用了ARC。NSZombiesEnabled将为您提供更多信息,说明在不应该发布的时候到底发布了什么。哦,不,我没有使用ARC。事实上,我最终在另一个类中完成了NSNotification observer的工作,这是出于一些奇怪的原因,但是ShareKit仍然给我带来了另一个与NSNotifications无关的问题。崩溃发生在应该调用addObserver方法时。因此,当应该调用sendDidFinish通知时,它就会崩溃。