我仍在研究Objective-C的基础。我在NSObject中编写了这样的代码。我需要删除观察者吗?如果是的话,我可以在哪里删除?我正在使用ARC。我需要删除dealloc吗?
- (id)init {
if (self = [super init])
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(preferredContentSizeChanged:)
name:UIContentSizeCategoryDidChangeNotification
object:nil];
}
return self; }
答案 0 :(得分:1)
iOS 8或更早版本 在取消分配观察者对象之前,您需要取消注册此通知。如果你忘记了你有可能发生车祸。
在OS X 10.11和iOS 9.0或更高版本中
NSNotificationCenter和NSDistributedNotificationCenter将不再向可能已解除分配的已注册观察者发送通知。
答案 1 :(得分:0)
如果您的目标是iOS 9+,则无需删除已添加的观察者。您可以在此处阅读有关此处的更多详细信息:Unregistering NSNotificationCenter Observers in iOS 9