词条 | @property |
释义 | 简介Objective-C语言关键词,与@synthesize配对使用。 功能:让编译器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。 如: 1、在头文件中: @property int count; 等效于在头文件中声明2个方法: - (int)count; -(void)setCount:(int)newCount; 2、实现文件(.m)中 @synthesize count; 等效于在实现文件(.m)中实现2个方法。 - (int)count { return count; } -(void)setCount:(int)newCount { count = newCount; } 以上等效的函数部分由编译器自动帮开发者填充完成,简化了编码输入工作量。 格式声明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 禁止多线程,变量保护,提高性能 参数类型详解参数中比较复杂的是retain和copy,具体分析如下: getter分析1、 @property(nonatomic,retain)test* thetest; @property(nonatomic ,copy)test* thetest; 等效代码: -(void)thetest { return thetest; } 2、@property(retain)test* thetest; @property(copy)test* thetest; 等效代码: -(void)thetest { [thetest retain]; return [thetest autorelease]; } setter分析1、 @property(nonatomic,retain)test* thetest; @property(retain)test* thetest; 等效于: -(void)setThetest:(test *)newThetest { if (thetest!= newThetest) { [thetestrelease]; thetest= [newThetest retain]; } } 2、@property(nonatomic,copy)test* thetest; @property(copy)test* thetest; 等效于: -(void)setThetest:(test *)newThetest { if (thetest!= newThetest) { [thetestrelease]; thetest= [newThetest copy]; } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。