Ios 在Master/Detail应用程序中使用removeObserver的正确方法
在master detail应用程序中,我有以下布局: 掌握 我们假设这里有一个UITableView 细节 显示有关主控形状项的详细信息。我们在NSNotificationCenter中设置了一个观察者 DetailModal 显示某物,从细节显示 如果我仍然希望在显示Detail或DetailModal时接收通知,但在返回Master时将其删除,那么调用Ios 在Master/Detail应用程序中使用removeObserver的正确方法,ios,objective-c,master-detail,Ios,Objective C,Master Detail,在master detail应用程序中,我有以下布局: 掌握 我们假设这里有一个UITableView 细节 显示有关主控形状项的详细信息。我们在NSNotificationCenter中设置了一个观察者 DetailModal 显示某物,从细节显示 如果我仍然希望在显示Detail或DetailModal时接收通知,但在返回Master时将其删除,那么调用removeObserver的正确方法是什么 在我看来,我会设置一个标志,在显示DetailModal时不删除观察者,并在viewwilld
removeObserver
的正确方法是什么
在我看来,我会设置一个标志,在显示DetailModal时不删除观察者,并在
viewwilldisapear
中检查该标志。这是一个好方法吗?我通常在我的子视图/子视图控制器的-(void)dealloc
方法上调用removeObserver
。弹出DetailModal
后,应将其释放。未解除锁定-有关讨论,请参阅
最好在视野中做这件事。我通常有一个布尔“isObserving”标志,在观察开始时设置,然后在调用ViewWillEnglishe时检查
eta——最佳实践表明,实际上应该在这两种情况下都这样做,但dealloc只是一个后盾
eta#2:使用ARC时,仅当引用计数降至零时才调用dealloc。如果它正在观察,则引用仍然存在,因此dealloc永远不会被调用。听起来像是我的想法,标志和签入视图将消失。您粘贴的链接中选择的答案实际上是使用dealloc。讨论围绕该问题展开,这可能是一个更好的链接: