一、@property参数
1、控制set方法的内存管理
retain:release旧值,retain新值(用于OC对象)
assign:直接赋值,不做任何内存管理(默认,用于非OC对象类型)
copy:release旧值,copy新值(一般用于NSString、Block)
2、控制需不需生成set方法
readwrite:同时生成set方法和get方法(默认)
readonly:只会生成get方法
3、多线程管理
atomic:提供多线程安全。是oc使用的一种线程保护技术,是防止在未完成的时候被另外一个线程读取,造成数据错误。而这种机 制是耗费系统资源的,所以在Iphone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。
nonatomic:禁止多线程,变量保护,提高性能。
4、控制set方法和get方法的名称
setter:设置set方法的名称,一定有个冒号:
getter:设置get方法的名称
5、值可否为空
nullable可空类型。
null_resettable来表示setter nullable,但是getter nonnnull。
6、ARC下@property修饰符
strong : 用于OC对象, 相当于MRC中的retain
weak : 用于OC对象, 相当于MRC中的assign
assign : 用于基本数据类型, 跟MRC中的assign一样