Dawninest

Objective-C | 属性

属性

属性的声明

@property 关键字,声明一个属性

属性参数

1
2
3
4
5
6
7
8
9
内存管理相关 	
assign:缺省型,修饰基本数据类型和delegate对象,表示无需进行任何内存管理
retain:对象类型,持有对象,引用计数+1
copy:对象类型(NSCopying),持有对象,对象不可变复制 线程相关
atomic:关心线程安全,通常用于多线程,原子性
nonatomic:不关心线程安全,用于单线程,非原子性 读写/只读
readwrite:可读取,可改写
readonly:只读,提供getter方法,不提供setter方法
strong = retain | weak = assign

原子性:要么完整的被执行,要么完全不执行

属性的应用

用属性声明后就会自带setter,getter方法,可以直接使用点语法

copy关键字

当使用不可变类型的属性时,等同于strong,当使用可变类型时,每次赋值都会拷贝一个新的对象

深复制:内容复制,编译器会开辟新的内存来存储复制对象的数据,复制对象retaincount默认为1,需手动释放

浅赋值:指针赋值,只是将对象的引用计数加1,需要手动释放

copy:不可变复制,若对象时不可变的是浅复制,若对象时可变的是深复制,且复制对象不可变

mutableCopy:可变复制,无论对象可变还是不可变都是深复制,复制的对象可变