黑马程序员技术交流社区

标题: 定义属性时,什么情况使用copy、assign、retain [打印本页]

作者: luguo    时间: 2015-6-8 18:54
标题: 定义属性时,什么情况使用copy、assign、retain
assign用于简单数据类型,如NSInteger,double,bool, retain和copy用于对象,  copy用于当a指向一个对象,b也想指向同样的对象的时候,如果用assign,a如果释放,再调用b会crash,如果用copy 的方式,a和b各自有自己的内存,就可以解决这个问题。 retain 会使计数器加一,也可以解决assign的问题。  另外:atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。 加了atomic,setter函数会变成下面这样: if (property != newValue) { [property release];  property = [newValue retain]; }  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2