objective-c – 未调用NSNotificationCenter选择器

前端之家收集整理的这篇文章主要介绍了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&C++相关文章