【问题标题】:Correct way of using removeObserver in Master/Detail application在 Master/Detail 应用程序中使用 removeObserver 的正确方法
【发布时间】:2013-09-06 08:52:31
【问题描述】:

在主从应用程序中,我有以下布局;

大师 假设我们这里有一个 UITableView

详情 显示有关来自 Master 的项目的更多信息。我们在这里在 NSNotificationCenter 中设置了一个观察者

DetailModal 显示一些东西,从细节中显示出来

如果我仍然想在显示 Detail 或 DetailModal 时接收通知但在我们返回 Master 时将其删除,那么调用 removeObserver 的正确方法在哪里?

按照我的看法,我会设置一个标志以在显示 DetailModal 时不移除观察者,并在 viewWillDissapear 中检查该标志。这是一个好方法吗?

【问题讨论】:

    标签: ios objective-c master-detail


    【解决方案1】:

    不是 dealloc - 请参阅 this question 进行讨论。

    最好在 ViewWillDisappear 中进行。我通常有一个布尔“isObserving”标志,在观察开始时设置,然后在调用 ViewWillDisappear 时检查。

    eta- 最佳实践表明它实际上应该在两者中完成,但 dealloc 只是一个支持。

    eta#2:对于 ARC,dealloc 仅在引用计数降至零时调用。如果它正在观察,则引用仍然存在,因此不会调用 dealloc。

    【讨论】:

    【解决方案2】:

    我通常在我的子视图/子视图控制器的- (void)dealloc 方法上调用removeObserver。弹出DetailModal 后应该会被释放。

    【讨论】:

      猜你喜欢
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      相关资源
      最近更新 更多