【问题标题】:No longer necessary to remove notification observers in Cocoa?不再需要在 Cocoa 中移除通知观察者?
【发布时间】:2012-09-27 07:10:51
【问题描述】:

在这篇关于垃圾收集的post 中,作者指出:

在 Mac OS X 10.6 和更高版本中,NSNotificationCenter 被弱引用,所以 您不再需要在代码中执行以下操作

[[NSNotificationCenter defaultCenter] removeObserver:self
      name:kObservationName
      object:nil];

这在某处有正式记录吗? removeObserver: 的文档仍然说:

请务必在之前调用此方法(或 removeObserver:name:object:) notificationObserver 或指定的任何对象 addObserver:selector:name:object: 被释放。

【问题讨论】:

标签: macos cocoa automatic-ref-counting nsnotificationcenter weak-references


【解决方案1】:

如果您正在构建 Garbage Collected 应用程序,那么您确实不需要注销对象来接收观察或通知。

但垃圾收集现在已弃用,您不应该将其用于新项目。

如果您使用的是 ARCMRC,那么您仍然需要删除对象。最好的方法通常是在dealloc 方法中。

【讨论】:

  • ARC 现在不支持归零弱引用吗?似乎 NSNotificationCenter 在 ARC 下可能是弱引用?
  • 它确实支持将弱引用归零,但您仍然需要自己删除观察结果。
  • 并非如此。它在里面某个地方。但推理是:ARC 只管理对象的生命周期,没有别的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多