strong和weak

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strong和weak相关的知识,希望对你有一定的参考价值。

参考技术A OC 采用的是引用计数式(ARC)的内存管理方式:

        1.自己生成的对象自己持有。

        2.非自己生成的对象自己也能持有。

        3.自己持有的对象不再需要时释放。

        4.非自己持有的对象自己无法释放。

        所以只要还有一个变量指向对象,对象就会保持在内存中。当指针指向新值,或者指针不再存在时,相关联的对象就会自动释放。

        strong表示强引用,这个关键字表示只要有对这个对象的强引用,这个对象就不会销毁,换句话说,只有所有对这个对象的强引用都去除时,这个对象才会被释放,无论这时还有多少弱引用引用它。

        weak表示弱引用,weak仍然可以指向一个对象,但不属于对象的拥有者。weak不会增加对对象的引用计数,当一个对象所有的强引用都去除时,即使有弱引用,这个对象也会被释放,也就自动置为 nil。

weak使用场景

1.在 delegate,block,NSTimer 等中使用,以避免循环引用所带来的内存泄漏。

2.我们使用xib时,拖出来的控件都使用weak这一属性。因为xib上的控件,我们的UIView已经对控件有了强引用,控件回跟着ViewController一起销毁,所以这个时候不必要必须强引用。

以上是关于strong和weak的主要内容,如果未能解决你的问题,请参考以下文章

strong和weak

iOS weak和strong的区别

OC基础 - strong和copy的区别【转载】

如何用python和智能方式覆盖<strong> <em> <u>到<strong>的所有情况?

em,i,strong,b标签的区别

iOS的属性声明:retain和strong的区别