iOS 属性的属性
2011-12-28 12:08
274 查看
关于retain, assign, copy的含义已经有很多文章了,自己使用的经验:
赋值:
class.propertyA = instanceA
retain, assign, copy 只影响 instanceA的计数,可能增加,可能不变。到这句执行完毕为止,只要instanceA是合法的,propertyA就是合法的。
retain, assign, copy:
谁创建了instanceA还是谁负责释放。但不同的类型,释放的时间不同。
常见的retain赋值:
addSubview, rootViewController, addGesture
常见的assign赋值:(概念上,背后到底有没有保存变量无关紧要)
presentModalViewController; presentPopover
释放:
对于retain类型的属性:
class.propertyA = nil; // class.propertyA = xxx;
相当于:[propertyA release];
而assign类型的属性(例如一般来说IBOutlet )
要释放必须是:
[propertyA release];
而一般不应该释放,没有职责释放assign类型的属性。但是在ViewDidUnLoad里面有时需要释放IBOutlet来节省空间。
赋值:
class.propertyA = instanceA
retain, assign, copy 只影响 instanceA的计数,可能增加,可能不变。到这句执行完毕为止,只要instanceA是合法的,propertyA就是合法的。
retain, assign, copy:
谁创建了instanceA还是谁负责释放。但不同的类型,释放的时间不同。
retain | 可以马上释放。 |
assign | 在 properyA 使用完毕后才可以释放 |
copy | 可以马上释放。 |
addSubview, rootViewController, addGesture
常见的assign赋值:(概念上,背后到底有没有保存变量无关紧要)
presentModalViewController; presentPopover
释放:
对于retain类型的属性:
class.propertyA = nil; // class.propertyA = xxx;
相当于:[propertyA release];
而assign类型的属性(例如一般来说IBOutlet )
要释放必须是:
[propertyA release];
而一般不应该释放,没有职责释放assign类型的属性。但是在ViewDidUnLoad里面有时需要释放IBOutlet来节省空间。
相关文章推荐
- iOS 成员变量跟属性的区别
- iOS开发UI篇-CALayer层的属性、隐式动画
- ios属性和实例变量
- 【iOS开发-10】UIProgressView进度条的几个属性介绍
- IOS开发UI篇—导航控制器属性和基本使用
- iOS开发UI基础—03transframe属性(形变)
- ios-开发 替换系统原生只读属性的 值
- iOS- 详解文本属性Attributes
- iOS中UIKit的外观属性及方法汇总
- iOS部分-UI基础控件 - 01天 入门 第10课 frame&bounds¢er属性
- iOS 动画Animation详解, UIView动画(UIView属性动画,UIViewTransition动画,UIView Block动画),CALayer动画(CABasicAnima...)
- iOS通过shell脚本批量修改属性
- iphone ios 文件系统操作(创建、删除,修改,获取属性)
- iOS-UI基础-手写控件,frame,center和bounds属性
- IOS小技巧:属性的lazyload懒加载的使用
- [iOS]NSString到底使用Copy还是使用Strong属性,有什么区别
- iOS 为CALayer添加可动画的属性(以二维码切换扫描区域为例)
- iOS UIButton各类属性设置大全2
- iOS-修改导航栏属性
- iOS 属性修饰符