码迷,mamicode.com
首页 > 移动开发 > 详细

iOS-开启arc之后 NSNotificationCenter removeObserver 是否需要调用

时间:2016-11-24 21:29:50      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:blog   sel   super   code   div   href   ica   cto   com   

开启ARC之后,NSNotificationCenter removeObserver 是否需要调用,在何时调用?

今天在stackoverflow上面看到一个问题,arc情况下是否需要调用removeObserver,自己想了想,的确是个问题,就研究了一下。

上代码:

- (void)dealloc {
    [[NSNotificationCenter defaultCenter]   removeObserver:self];
}

本来想着在arc中dealloc方式是已经遗弃的了,但是事实是它还存在,但是不能像mrc中那样还需要调用一下[super dealloc],在arc环境下,这个方法是不能用的,否则编译器直接就报错。 
后来我就想到dealloc方式会正常调用吗?

下面是添加观察者的方法:

[[NSNotificationCenter defaultCenter] addObserver:self
                                                     selector:@selector(method:)
                                                         name:@"postkey"
                                                       object:nil];

这个方法第一个参数Observer是不会对它进行retain操作,所以不会形成循环引用,但是还有必要调用removeObserver吗?

答案当然是:有必要!

如果这个对象被释放,当在调用post消息的时候,就会报对象被释放的错误,导致闪退,所以在添加观察者的对象,一定要在它被销毁的时候从消息中心删除!

 
 

iOS-开启arc之后 NSNotificationCenter removeObserver 是否需要调用

标签:blog   sel   super   code   div   href   ica   cto   com   

原文地址:http://www.cnblogs.com/yongdaimi/p/6099487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!