当我注释掉...
// [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LoadRequestFromAppDel" object:Nil];
...我的应用程序按预期工作,通知中心一次又一次地工作。
但是,当我取消注释它以便它实际上在我的代码中运行时,我的应用程序可以正常运行一次,但是我第二次尝试重复它-它根本不会触发。
有人告诉我确保“ removeObserver”,但是当我这样做时,我的应用程序将按预期停止工作,那么我是否要摆脱此removeObserver代码?还是有其他方法可以解决这个问题?
(我的应用正在检测urlscheme://是否为pushtap://,然后通过通知中心将url发送到另一个视图,然后在完成后尝试尝试removeObserver ...问题是,如果我已经添加了removeObserver,第二次我尝试从safari使用pushtap://时,它根本不会再次运行代码-除非当然我摆脱了上面显示的removeObserver行。)
最佳答案
您需要观察何时出现视图:
- (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];
}
这样,您就不会因为观察者不在屏幕上而使他们无法响应。