NSNotification removeObserver问题

时间:2011-05-11 09:12:18

标签: iphone objective-c ios nsnotificationcenter

我要么脑部受损,要么我缺少一些NSNotificationCenter的缺席

问题是,如果我创建一个观察者,并在下一行尝试删除它,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllVisibleMapViews) name:@"ClearVisibleMaps" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self forKeyPath:@"ClearVisibleMaps"];

我得到了

*** Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer <MyApp 0x592db70> for the key path "ClearVisibleMaps" from <NSNotificationCenter 0x4e0fbb0> because it is not registered as an observer.'

我在行后添加和删除观察者行只是为了说明一点。在我的代码中,我将在dealloc中使用remove。

所以任何想法为什么它告诉我,我没有首先添加和观察者?

1 个答案:

答案 0 :(得分:24)

您正在删除密钥路径的观察者,而不是通知名称。删除应该是这样的:

[[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:@"ClearVisibleMaps"
                                              object:nil];