iOS 基础知识 assign retain copy 和 nonatomic的用法

来源:互联网 发布:ps3 linux 编辑:程序博客网 时间:2024/05/16 09:30

1.在属性定义时,什么时候用assign、retain、copy、nonatomic

(1)assign:普通赋值,一般用于基本数据类型,常见委托设计模式,以此来防止循环引用。

(2)retain:保留引用计数,获取对象的绝对使用权,引用计数在原有的基础上加1。

(3)用来复制对象,一般字符串使用copy,Foundation中的不可变对象在使用copy效果相对于retain,只是引用计数加1。

(4)nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能。


2.strong与weak,_unsafe _unretained与weak的区别

(1)strong 叫强引用,weak则称为弱引用,在ARC中,使用strong告诉编译器帮助我们自动插入retain,weak是普通赋值相当于手动管理内存的assign。

(2)_unsafe _unretained 于weak功能一致,区别在于当指向的对象销毁之后,weak会将变量置为nil,防止调用野指针。



0 0
原创粉丝点击