iOS定义属性时,什么情况使用copy,assign和retain
答案:1 悬赏:60 手机版
解决时间 2021-02-15 17:20
- 提问者网友:谁的错
- 2021-02-15 12:07
iOS定义属性时,什么情况使用copy,assign和retain
最佳答案
- 五星知识达人网友:枭雄戏美人
- 2021-02-15 13:38
具体情况要具体分析~而且编程环境下的情况也各不相同,我简单介绍一下这三个关键词。
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]; }
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]; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯