objective-c – 未调用NSNotificationCenter选择器

在我的iPad应用程序中,在一个类中我注册一个通知
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    [nc addobserver:self selector:@selector(selectedList:) name:@"TTSelectedList" object:nil];

我的selectedList:方法如下所示:

- (void)selectedList:(NSNotification*)notification
{
    NSLog(@"received notification");
}

然后在另一个类(UITableViewController)中,我在选择行时发布该通知

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"posting notification");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"TTSelectedList" object:nil];
}

我可以确认通知正在发布,因为“发布通知”被记录到控制台,但是从未调用“已接收通知”,这意味着未收到通知且未调用选择器.我无法弄清楚造成这种情况的原因.

谢谢

解决方法

最可能的原因是你实际上并没有调用addobserver:selector:name:object:.你那里没有伐木线;你确定代码正在运行吗?

第二个最可能的原因是您在发布通知之前调用了removeObserver:这最常见于dealloc(如果您曾经观察过任何内容,则应始终调用removeObserver).这里的错误是你的观察对象在通知之前已经解除分配.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...