Objective-C中的@property用法

声明property的语法为:多线程

@property (参数1,参数2) 类型 名字;

如:性能

@property(nonatomic,retain) UIWindow *window;

其中参数主要分为三类:atom

读写属性: (readwrite/readonly)

setter语意:(assign/retain/copy)

原子性: (atomicity/nonatomic)

各参数意义以下:.net

readwrite: 产生settergetter方法线程

readonly: 只产生简单的getter,没有setter。指针

assign: 默认类型,setter方法直接赋值,而不进行retain操做code

retain: setter方法对参数进行release旧值,再retain新值。对象

copy: setter方法进行Copy操做,与retain同样blog

nonatomic: 禁止多线程,变量保护,提升性能内存

@property的参数:

(1)set 方法内存管理相关的参数

(a)retain:release 旧值,retain 新值(适用于 OC对象类型
(b)assign:直接赋值(默认,适用于非OC对象类型), 经常使用在 BOOL 、int 等基本数据类型。
(c)copy:release 旧值,copy新值, 经常使用在 NSString对象

(2)是否要生成 set 方法

(a)readwriter:同时生成set和get方法的声明和实现
(b)readonly:只生成 get的声明和实现

(3)多线程管理

(a)nonatomic:性能高(通常都是使用这个)
(b)atomic:性能低(默认)

(4)set 和 get 方法的名称

(a)setter:决定了 set 方法的名称,必定要加个冒号“:“
(b)getter:决定了 get 方法的名称,不要加冒号

(5)strong 和 weak

(a) strong: 用于通常对象
(b) weak: 用于UI控件

id万能指针

Person *p = [Person new];

至关于:

id p = [Person new];

注意 id 和 p 之间不要再加了,id 中默认就带了。

详情请参考博文Objective-C中的@property和@synthesize用法

相关文章
相关标签/搜索