IOS中(assign,retain,copy,weak,strong)的区别以及nonatomic的含义
首先,上面五个并不是在一个层面上的,可以分为两部分,第一部分是assign、retain、copy,第二部分是weak、strong。assign声明的属性是不会增加引用计数的,也就是说声明的属性释放后,就没有了,即使其他对象用到了它,也无法留住它,只会crash。与assign相对,我们要解决对象被其他对象引用后释放造成的问题,就要用retain来声明。最常见到copy声明的应该是NSString。copy工作由copy方法执行,此属性只对那些实现了NSCopying协议的对象类型有效 。对应的有atomic,是原子性的访问。我们知道,在使用多线程时为了避免在写操作时同时进行写导致问题,经常会对要写的对象进行加锁,也就是同一时刻只允许一个线程去操作它。
用户评论