NSNotificationCenter零星崩溃

时间:2014-02-09 23:11:03

标签: ios nsnotificationcenter uicollectionviewcell

在我的iOS应用程序中,我可以切换主题,以便立即在所有视图中切换主题任何可见视图都订阅了名为“updateTheme”的NSNotificationCenter通知,如下所示:

[[NSNotificationCenter defaultCenter] postNotificationName:@"updateTheme" object:self];

但是当我在一个带有自定义集合视图单元格的视图中时,应用程序会在收到通知的单元格上崩溃。这是单元格中的所有代码:

- (void)didMoveToSuperview {
    if (!isNew) {
        isNew = YES;

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTheme) name:@"updateTheme" object:nil];

        [self updateTheme];
    }
}

- (void)updateTheme {
    [UIView animateWithDuration:.5 animations:^{
        self.titleLabel.textColor = [Colors boldText];
        self.divider.backgroundColor = [Colors darkBorder];
    } completion:^(BOOL finished){}];
}

当我注释掉单元格订阅通知的行时,应用程序运行正常。否则它会因此错误而崩溃

-[__NSCFType updateTheme]: unrecognized selector sent to instance 0x1775d5d0

我无法弄清楚为什么会发生这种情况,我们将不胜感激任何帮助或建议。

1 个答案:

答案 0 :(得分:2)

正如matt所指出的那样,我在解除分配时没有以观察者的身份移除单元格,随后当通知被触发时,对象消失,因此应用程序崩溃了。为了解决这个问题,我添加了这个:

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