arc strong weak mrc retain

来源:互联网 发布:电子cad软件 编辑:程序博客网 时间:2024/06/05 15:55
了 就跟我们普及一下啊.


strong是ARC版的retain

都表示强引用

其中,MRC的retain,同一个对象可以多次使用,不会出什么问题

只要你记得release

ARC版的strong就不能这么干了,同一个对象只能被strong一次。

retain可以不断 +1,而strong就只是+1一次的意思啊

其它任何地方对这个对象的引用,只能用weak。不然就会发生循环引用,造成这个对象永远释放不掉。

在ARC里,strong和weak是成对使用的。

顺便解释一下weak

知道的兄弟可以补充

weak是assign的ARC版

都是弱引用


代理设置成weak  也是为了避免 循环引用

对象的引用是assign时,当它被释放后,那个变量还指向那个地址。即使那个地址什么都没有。就是常说的也指针。

所以,以前的代码里,在dealloc方法里,会写xxx.delegate = nil这种代码。就是为了防止野指针。


拖出来的控件、和delegate,都用weak


对象的引用,一定是有个变量的

我说的是变量


在ARC里,我们使用weak来弱引用某个对象。当这个对象被释放时,变量不再指向那个地址,而是自动指向nil

利用这一点,我们可以在定义delegate时,设置引用为weak。这样,就不再需要写类似xxx.delegate = nil这种代码了。

理解了weak的含义,就能明白为什么IBOutlet的对象必须用weak来弱引用。

0 0