1、跟内存管理相关的参数
(1)retain : release 旧值,retain新值(适用于OC对象类型)。
(2)assign : 直接赋值(默认,适用于非OC对象类型)。
(3)copy : release旧值,copy新值(一般用于NSString)。
2、是否要生成set方法
(1)readwrite : 告诉编译器, 在自动生成属性方法时, 同时生成setter和getter的声明和实现。(默认)
(2)readonly : 告诉编译器, 在自动生成属性方法时, 只会生成getter的声明和实现。
3、多线程管理
(1)atomic : 原子特性, 保证线程安全, 内部做了安全处理(加锁与解锁), 性能低。(默认)。
(2)nonatomic : 非原子特性, 不保证线程安全, 因为对于setter和getter的使用比较频繁, 在一段时间内可能要多次访问, 所以使用atomic会非常消耗系统资源, 降低程序执行效率, 使用nonatomic虽然不保证线程安全, 但是一般情况下使用都是安全的, 所以对于原子特性, nonatomic性能高, 推荐使用nonatomic。(推荐使用)。
4、setter和getter方法的名称
(1)setter : 决定了set方法的名称,一定要有个冒号:
(2)getter:决定了get方法的名称
@property (getter xxx)int weight;
@property (setter xxx:)int weight;
原来的get方法名为weight;新的get方法名就是括号中的xxx。
原来的set方法名为setWeight:;新的get方法名就是括号中的xxx:。(冒号不能丢)
(3)返回BOOL类型的方法名一般以is开头
例如:@property (getter = isRich)BOOL rich;