当我发表评论时......
// [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LoadRequestFromAppDel" object:Nil];
...我的应用按预期工作,通知中心一次又一次地工作。
但是当我解除它,所以它实际上在我的代码中运行,我的应用程序将正常工作,但第二次我尝试重复它 - 它根本不会触发。
我被告知确保“removeObserver”,但是当我这样做时,我的应用程序停止按预期工作,所以我只是摆脱这个removeObserver代码?或者有不同的方法来处理这个问题吗?
(我的应用正在检测urlscheme://是pushtap://然后它通过通知中心将url发送到另一个视图,然后它在完成后尝试removeObserver ...问题是,它只是这样做有一次,如果我添加了removeObserver,第二次尝试使用pushtap://来自safari,它根本不再运行代码 - 除非我摆脱上面显示的removeObserver行。)
答案 0 :(得分:1)
当您不再需要侦听该通知时,需要调用removeObserver,如果在viewController消失时执行此操作,则需要在再次出现时重新添加观察者。
答案 1 :(得分:0)
删除观察者就是这样做的。在您的情况下,您希望继续观察,以便您可以删除该行。
我建议将那行代码移到你的dealloc方法中。
答案 2 :(得分:0)
您需要观察视图何时出现:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mySelector:) name:@"MyNotification" object:nil];
}
然后你可以在视图消失时删除你的观察者:
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
这样你就不会留下无论如何都无法回应的观察者,因为他们不在屏幕上。