Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 不再需要删除Cocoa中的通知观察员?_Macos_Cocoa_Automatic Ref Counting_Nsnotificationcenter_Weak References - Fatal编程技术网

Macos 不再需要删除Cocoa中的通知观察员?

Macos 不再需要删除Cocoa中的通知观察员?,macos,cocoa,automatic-ref-counting,nsnotificationcenter,weak-references,Macos,Cocoa,Automatic Ref Counting,Nsnotificationcenter,Weak References,在这篇关于垃圾收集的文章中,作者指出: 在Mac OS X 10.6及更高版本中,NSNotificationCenter是弱引用的,因此 您不再需要在代码中执行以下操作 [[NSNotificationCenter defaultCenter] removeObserver:self name:kObservationName object:nil]; 这是否有官方文件记载?文件中仍然说: 请确保在之前调用此方法(或removeObserver:name:object

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

在Mac OS X 10.6及更高版本中,NSNotificationCenter是弱引用的,因此 您不再需要在代码中执行以下操作

[[NSNotificationCenter defaultCenter] removeObserver:self
      name:kObservationName
      object:nil];
这是否有官方文件记载?文件中仍然说:

请确保在之前调用此方法(或removeObserver:name:object:) notificationObserver或中指定的任何对象 addObserver:选择器:名称:对象:已解除分配


如果您正在构建一个垃圾收集的应用程序,那么您确实不需要为接收观察或通知而注销对象

但是垃圾收集现在已经被弃用了,并且不应该用于新项目


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

这个答案也说明没有必要:ARC现在不支持对弱引用进行调零吗?似乎NSNotificationCenter可能是ARC下的弱引用?它确实支持将弱引用归零,但您仍然需要自己删除观测值。不是真的。它就在那里的某个地方。但理由是:ARC只管理对象生命周期,其他什么都不管理。