1

我试图弄清楚为什么我的应用程序中的 addObserver 调用在应该调用其选择器时导致 EXC_BAD_ACCESS 。让我再解释一下,我在调用 MFMessageComposeView 的方法中调用 addObserver,然后在第 3 方库 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!")];
}

这不起作用的原因是什么?

谢谢!

4

1 回答 1

3

如果在发布通知时发生崩溃,则解决方案显然是发布的目标。

NSNotificationCenter 不保留注册的观察者。您必须确保观察者在注册时仍然活着,并且在它被释放之前它未注册。

于 2013-01-13T20:15:35.257 回答