@property预编译指令的作用是自动声明属性的setter和getter方法。
@synthesize创建该属性的访问器
对象可以通过"."或调用访问器访问属性
实例变量有进可以与属性并不同名,与java属性一样。属性名称只由属性@property定义声明
@property属性声明格式:
@property(参数1,参数2)类型 名字;
如:@property(nonatomic,retain)UIWindow *window;
其中参数主要分为三类;
读写属性:(readwrite/readonly)
setter语意:(assign/retain/copy)
原子性:(atomicity/nonatomic)
各参数意义如下:
readwrite 产生setter\getter方法
readonly:只产生简单的getter,没有setter
assign:默认类型,setter方法直接赋值,而不进行retain操作
retain setter方法对参数进行release旧值,再retain新值
copy setter方法进行Copy操作,与retain一样
nonatomic 禁止多线程,变量保护,提高性能