我试图弄清楚为什么我的应用程序中的addObserver调用在应调用其选择器时导致EXC_BAD_ACCESS的原因。让我进一步解释一下,我在调用MFMessageComposeView的方法中执行addObserver调用,然后在第三方库ShareKit中为“didFinish”通知添加了观察者。现在,每当应调用addObserver的选择器时,都会引发EXC_BAD_ACCESS。如果有任何区别,我的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不保留注册的观察员。您必须确保观察者在注册时仍然有效,并且在发布之前将其注销。