技术文章分类(180)

技术随笔(11)

strong weak retain assign copy等属性修饰的区别,及使用场景

关于他们之间的本质区别,我就不多说了,网上有很多说的非常详细透彻的资料。但是关于使用,为什么这么使用,网上的资料却很少,或者说很不好找

 

assign复制地址和数据,retain复制数据,新地址,copy新地址,新数据(数据==原来的数据)

assign:对基础数据类型 (NSInteger等)和C数据类型(int, float, double, char,等),还有delegate(防止loop retain)

copy:修饰NSString

retain:修饰NSObject及其子类

 

形象的比喻:assign一把钥匙,一套房子;retain 2把钥匙,一套房子;copy 2把钥匙,2套房子;

strong与retain类似,引用计数自动加1;

weak与assign类似,但是weak在对象消失后会自动把指针致为nil

 

strong属性指的是对这个对象强烈的占有!不管别人对它做过什么,反正你就是占有着!它对于你随叫随到。
weak指的是对这个对象弱弱的保持着联系,每次使用的时候你弱弱的问它一句“还在吗”,如果没人回应(变成nil),就说明它已经离开你了(大概是被系统残忍的回收了吧)

 

网上有一种说法:

  IB 一般用weak,subviews数组会强引用这些views。 非IB,用代码alloc view要用strong,否则对象会因无引用者立即被释放。 

  自定义的view用strong。

 

posted @ 2014-08-22 08:54  坤哥MartinLi  阅读(977)  评论(0编辑  收藏  举报