属性参数
来源:互联网 发布:sas编程 编辑:程序博客网 时间:2024/05/01 09:14
转自:http://www.cnblogs.com/kenshincui/p/3870325.html#propertyParameter 崔江涛(KenshinCui)
属性参数
像上面这样编写setCar方法的情况是比较多的,那么如何使用@property进行自动实现呢?答案就是使用属性参数,例如上面car属性的setter方法,可以通过@property定义如下:
@property(nonatomic,retain) Car *car;
你会发现此刻我们不必手动实现car的getter、setter方法程序仍然没有内存泄露。其实大家也应该都已经看到前面Person的name属性定义的时候我们同样加上了(nonatomic,copy)参数,这些参数到底是什么意思呢?
nonatomic属性读取的是内存数据(寄存器计算好的结果),而atomic就保证直接读取寄存器的数据.
@property的参数分为三类,也就是说参数最多可以有三个,中间用逗号分隔,每类参数可以从上表三类参数中人选一个。如果不进行设置或者只设置其中一类参数,程序会使用三类中的各个默认参数,默认参数:(atomic,readwrite,assign)
一般情况下如果在多线程开发中一个属性可能会被两个及两个以上的线程同时访问,此时可以考虑atomic属性,否则建议使用nonatomic,不加锁,效率较高;readwirte方法会生成getter、setter两个方法,如果使用readonly则只生成getter方法;关于set方法处理需要特别说明,假设我们定义一个属性a,这里列出三种方式的生成代码:
assign,用于基本数据类型
-(void)setA:(int)a{
_a=a;
}
retain,通常用于非字符串对象
-(void)setA:(Car*)a{
if(_a!=a){
[_a release];
_a=[a retain];
}
}
copy,通常用于字符串对象
-(void)setA:(NSString*)a{
if(_a!=a){
[_a release];
_a=[a copy];
}
}
- 属性参数
- CommandArgument属性 绑定参数
- iframe属性参数
- 获取属性文件参数
- Spring 配置文件 属性 参数
- marquee属性 marquee参数
- Hibernate配置属性参数
- viewport属性各个参数
- @property的属性参数
- @property属性参数
- C# WebService 参数属性
- setWindowFlags参数的属性
- log_archive_dest_n参数的属性
- Hibernate参数属性配置
- 属性路由参数约束
- iOS 参数的属性
- 属性参数的区别
- dialog属性参数
- Android更改工程名称
- 前缀表达式与后缀表达式
- hdu 1671 Phone List
- LeetCode Search for a Range
- apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for
- 属性参数
- hibernate的“ No suitable driver”错误
- Gson解析复杂的json数据
- 键盘VK键值列表
- SIFT检测特征点之找到主方向
- 在centos6上搭建git服务器
- 【牛腩新闻发布系统 一】如何高效写代码
- 使用PHP制作 简易员工管理系统之七(MVC实现用户信息增、删、改、查)
- KVC