assign, copy, retain - 仔细看看怎么回事
来源:互联网 发布:安卓应用数据备份 编辑:程序博客网 时间:2024/05/02 01:02
用@property不就完了么,为啥要自己写Getter和Setter?
有些时候需要在getter和setter方法中加入些特别的操作。
最简单的getter和setter
- (SomeVariable)someValue{ return someValue;}
- (void)setSomeValue:(SomeVariable)aSomeVariableValue{ someValue = aSomeVariableValue;}
如果我们把nonatomic, assign的property展开,就能得到以上的getter和setter。
@property (nonatomic, assign) SomeVariable someValue;
以上对于primitive type和其他非对象类数据结构管用。例如:基础数据类型char、int、float、long、double、或者Objective C的能被回收的对象(只在Mac上才有GC,iOS上就木有了)
那咱要是展开个retain的property,那getter和setter会是啥样子呢
- (void)setSomeInstance:(SomeClass *)aSomeInstanceValue{ if (someInstance == aSomeInstanceValue) { return; } SomeClass *oldValue = someInstance; someInstance = [aSomeInstanceValue retain]; [oldValue release];}
最后那段代码好绕啊,写成这样不就好了嘛?
- (void)setSomeInstance:(SomeClass *)aSomeInstanceValue{ [someInstance release]; someInstance = [aSomeInstanceValue retain];}
上面的代码的第一个release会在retain之前就把对象给销毁了。
那写个setter这么麻烦,有木有简单点的语法?有,如下:
- (void)setSomeInstance:(SomeClass *)aSomeInstanceValue{ [someInstance autorelease]; someInstance = [aSomeInstanceValue retain];}
- assign, copy, retain - 仔细看看怎么回事
- assign retain copy
- assign / retain / copy区别
- retain/copy/assign
- retain, copy, assign区别
- assign retain copy iOS
- Copy/Retain/Assign
- atomic copy assign retain
- [iOS_Dev] @copy @retain @assign
- retain, copy, assign区别
- 关键字copy 、retain、assign
- assign copy retain
- (assign,retain,copy):
- 理解assign,copy,retain
- assign,retain,copy对比
- retain, copy, assign区别
- assign copy retain 理解
- retain/copy/assign的含义
- 防止表单重复提交的两种方式
- 重新启动aspnet服务
- ScrollView当显示超出当前页面时自动移动到最底端
- 讨吉利
- wifi wpa_supplicant软件架构分析
- assign, copy, retain - 仔细看看怎么回事
- 责任链模式
- 一针见血
- MYSQL存储过程中 使用变量 做表名
- 永远有理的妈妈
- GUI 三种布局
- SharedPreferences存储变量的文件路径
- linux系统中配置samba
- JAVA终止循环体(单层循环、双层循环)