ARC中的weak和strong

来源:互联网 发布:网络名誉侵权起诉状 编辑:程序博客网 时间:2024/05/20 22:39
①一般对象用strong
②UI控件用weak,和strong都可以,weak更高性能
③delegate用weak
在ARC环境下,当一个对象没有被strong( 强指针 )指向的时候就会被回收内存,而且所有指针默认是 strong。__weak 可以设置为弱指针


为什么代理用weak?
实线为strong指针,虚线为weak指针

情景一
(代理为strong),当window的rootViewController发生替换(rootViewController设置为另外一个viewController),下图中红色的强指针消失,但是UIViewController还是被UIScrollView的delegate强指针指着,所以不会被自动回收内存,发生内存泄露

情景一
(代理为weak),当window的rootViewController发生替换(rootViewController设置为另外一个viewController),下图中红色的强指针消失,UIViewController没有被强指针指着,会自动回收内存。

0 0