我试图弄清楚为什么我的应用程序中的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不保留注册的观察员。您必须确保观察者在注册时仍然有效,并且在发布之前将其注销。

10-08 03:10