Objective-C @property和@synthesize
Objective-C中的特性@property和@synthesize
1. "@property"功能是声明当前属性为编译器自动生成set/get 方法
2. "@synthesize"功能是让编译器自动生成set/get方法
3. "@property"的关键字涉及到nonatomic,retain,copy,assign,readwrite,readonly这些关键字。一般在".h"文件中声明时的格式为:
@property(nonatomic ,retain|copy|assign|readwrite|readonly)className propertyName;
在@property后紧跟的括号内的属性的设置将直接影响到编译器自动生成的set/get方法的形式。
nonatiomic,这部分将影响编译器合成访问器时不考虑线程安全,如果代码中不涉及多线程的内容,使用这个属性即可。如果这个位置设为空,则默认为atomic形式,即考虑多线程的机制。
retain、copy和assign将影响编译器自动生成的set方法。其中:
- retain 自增一个propertyName的引用计数,
- copy 复制propertyName
- assign 单纯的赋值(这是针对非对象特性的)
readwrite时,propertName的值可以设置也可以获取,编译器自动合成set/get方法;readonly时,编译器只合成get方法。