iOS开发修饰属性关键字

关键字类别

读写权限

关键字名称 顾名思义 关键字描述
readonly 只读 具有get方法
readwrite默认 读写 同时具有setget方法

原子

关键字名称 顾名思义 关键描述 特点
atomic默认 原子 生成setter方法代码会被加上线安全 安全效率
nonatomic 原子 生成setter方法代码不会被加上线安全 效率高、不安全

内存管理

关键字名称 顾名思义 所属时期 关键字描述 修饰类型
retain 保留 MRC 生成setter方法时,先判断新旧对象是否同一个对象,如果不是,release(释放)旧的对象retain(保留)新的对象 只能修饰NSObject对象,不能修饰基本数据类型
assign 分配 MRC 生成settet方法时,直接赋值 可以修饰基础数据类型和NSObject对象
strong 强的 ARC 对象引用,每对这个属性引用一次引用计数就会+1 只能修饰NSObject对象,不能修饰基本数据类型,是id对象的默认修饰符
weak 弱的 ARC 对象引用引用对象时,引用计数不变 只能修饰NSObject对象,不能修饰基本数据类型,防止循环引用delegate一般都用weak修饰
copy 复制 属于某个定时 用于对象的拷贝 只能修饰NSObject对象,不能修饰基本的数据类型,多用于NSString类型

拷贝拷贝指向某一内存指针,但是在内存中并没有开辟一块新的空间。此时retainCount+1,这个+1是指原对象的引用计数+1。

拷贝拷贝一个完整的对象,且在内存中开辟了一块新的空间。此时原对象引用计数不变,新对象引用计数+1

对于不可变对象,使用copy是浅拷贝使用mutableCopy是深拷贝
对于可变对象,使用copymutableCopy都是深拷贝

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注