博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
属性参数
阅读量:4511 次
发布时间:2019-06-08

本文共 805 字,大约阅读时间需要 2 分钟。

如何使用@property进行自动实现呢?答案就是使用属性参数,例如car属性的setter方法,可以通过@property定义如下:

@property (nonatomic,retain) Car *car;

你会发现此刻我们不必手动实现car的getter、setter方法程序仍然没有内存泄露。其实大家也应该都已经看到前面Person的name属性定义的时候我们同样加上了(nonatomic,copy)参数,这些参数到底是什么意思呢?

propertyParameter

@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];
}
}

转载于:https://www.cnblogs.com/xiamo123/p/4754932.html

你可能感兴趣的文章
第四次实验报告
查看>>
给mysql的root用户
查看>>
Mirror--镜像用户同步
查看>>
『科学计算』高斯判别分析模型实现
查看>>
『Pickle』数据结构持久化模块_常用方法记录
查看>>
pycharm 的包路径设置export PYTHONPATH=$PYTHONPATH
查看>>
SQL语句创建函数
查看>>
Git快速入门
查看>>
查找数组元素位置
查看>>
vue开发的打包配置
查看>>
jquery基础
查看>>
端口作用
查看>>
SpringAOP基础 - 静态代理设计模式
查看>>
day1-bytes类型 三元运算 进制
查看>>
验证码生成-->漂亮啊
查看>>
OC 出现中文乱码
查看>>
eclipse.ini的相关说明
查看>>
Unity KillCount
查看>>
matlab中plot使用方法
查看>>
Haskell 差点儿无痛苦上手指南
查看>>