我是否需要删除NSObject中的观察者?

时间:2016-12-08 07:40:14

标签: ios nsobject

我仍在研究Objective-C的基础。我在NSObject中编写了这样的代码。我需要删除观察者吗?如果是的话,我可以在哪里删除?我正在使用ARC。我需要删除dealloc吗?

- (id)init {
    if (self = [super init])
    {
        [[NSNotificationCenter defaultCenter] addObserver:self
         selector:@selector(preferredContentSizeChanged:)
         name:UIContentSizeCategoryDidChangeNotification
         object:nil];

    }
    return self; }

2 个答案:

答案 0 :(得分:1)

iOS 8或更早版本 在取消分配观察者对象之前,您需要取消注册此通知。如果你忘记了你有可能发生车祸。

在OS X 10.11和iOS 9.0或更高版本中

NSNotificationCenter和NSDistributedNotificationCenter将不再向可能已解除分配的已注册观察者发送通知。

https://developer.apple.com/library/content/releasenotes/Foundation/RN-Foundation/index.html#//apple_ref/doc/uid/TP30000742

答案 1 :(得分:0)

如果您的目标是iOS 9+,则无需删除已添加的观察者。您可以在此处阅读有关此处的更多详细信息:Unregistering NSNotificationCenter Observers in iOS 9