设置器、访问器与点语法
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;
}
}
@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;
}
}
相关文章推荐
- vs2008中使用母版页关于引用*.js的[智能语法提示]和[设置路径]的方法和问题
- Vim的行号、语法显示等设置,即.vimrc文件的配置
- Open suse下 vi 语法加亮设置 显示
- 设置vim语法高亮显示和自动缩进
- ubuntu设置vim语法高亮显示和自动缩进
- Embed标签的功能、语法和属性设置
- oracle数据库字符集设置的查询语法
- 设置vim语法高亮显示和自动缩进 (转)
- 如何设置UltraEdit的语法颜色及相关问题
- Vim的行号、语法显示等设置,即.vimrc文件的配置
- CSS 教程之内容设置的一些语法
- ubuntu设置vim语法高亮显示和自动缩进
- ubuntu设置vim语法高亮显示和自动缩进 zz
- Ubuntu中设置vi编辑器语法着色和高亮显示,解决vi方向键问题
- Vim的行号、语法显示等设置,即.vimrc文件的配置
- 用CSS设置表格边框的语法详解
- marquee基本语法和marquee的相关参数设置
- ubuntu设置vim语法高亮显示和自动缩进 (windows风格的C/C++自动缩进)
- 设置vim语法高亮显示和自动缩进
- linux下对Apache 服务器权限设置命令语法