iOS 属性的属性

关于retain, assign, copy的含义已经有很多文章了,自己使用的经验:


赋值:

class.propertyA = instanceA

retain, assign, copy 只影响 instanceA的计数,可能增加,可能不变。到这句执行完毕为止,只要instanceA是合法的,propertyA就是合法的。

retain, assign, copy: 

谁创建了instanceA还是谁负责释放。但不同的类型,释放的时间不同。

retain可以马上释放。
assign在 properyA 使用完毕后才可以释放
copy可以马上释放。


常见的retain赋值:

addSubview, rootViewController, addGesture

常见的assign赋值:(概念上,背后到底有没有保存变量无关紧要)

presentModalViewController; presentPopover 


释放:

对于retain类型的属性:

class.propertyA = nil; // class.propertyA = xxx; 

相当于:[propertyA release];


而assign类型的属性(例如一般来说IBOutlet )

要释放必须是:

[propertyA release];

而一般不应该释放,没有职责释放assign类型的属性。但是在ViewDidUnLoad里面有时需要释放IBOutlet来节省空间。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值