您的位置:首页 > 其它

设置器、访问器与点语法

2014-08-04 10:58 92 查看
oc当中通过@property和 @synthesize 配对使用来自动生成变量的set和get方法,通过使用点语法可以大大减少我们程序员代码量,也方便学习过其他语言的人上手oc语言

@property有以下几种属性

readwrite 默认

assign 默认

readonly 只读(只有get方法,禁用set方法)

给setter和getter方法起别名(setter = a:, getter = b)

atomic 开启多线程变量保护,会消耗一定的资源(非原子性,保证多线程安全)

nonatomic:禁止多线程变量保护,提高性能

assign:直接赋值,适用于基本数据类型(非对象类型)

retain:赋值时做内存优化,使用于对象类型

copy:复制一个副本,适用于特殊的对象类型(常用于NSstring)(有NSCoping协议的才可以用copy)

assign retain copy的setter方法的内部实现

assign:

@property float price;

内部实现:

- (void)setPrice:(float)price

{

_price = price;

}

getter是:

- (float)price

{

return _price;

}

retain:

@property (retain, nonatomic) NSString *company;

内部实现:

- (void)setCompany:(NSString *)company{

if(_company != company){

[_company release];

[company retain];

_company = company;

}

}

copy:

@property (copy, readwrite, nonatomic) NSString *company;

内部实现:

- (void) setCompany:(NSString *)company{

if(_company != company){

[_company release];

[company copy];

_company = company;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: