关于release的用法

1.头文件中声明的对象要在- (void) dealloc方法中release掉.

原因:创建这个对象时已经为这个对象分配了空间.

2.release对象不可以通过[NSString stringwithString]创建的对象.但是可以用于NSString *str=@"";

3.传递对象时注意的release 问题:主要有两种情况.self.a= 和a=两种情况.对于前者可使用autorelease ;对于后者在传值之前不能release

4.放到数组array或者字典dictionary中的对象可将release的所有权交给数组,或是字典.

原因:把对象放到数组中会使该对象的retaincount增加1,如无特殊需求可在添加到数组之后,将该对象release 掉或者设置autorelease.

注意:view 的addSubview也是将对象放到数组中,所以可将其release掉把release的权利交由数组.

5.autorelease实在赋值后或者是将第一相应者传递之后调用的,如果设置了autorelease对象在nsautoreleasepool中,则该对象随着[pool release]一起释放.UITableviewCell 可设置为autorelease.例如navigation 栈中popviewController,dismissModleviewController等.

6.UINavigationController执行push时会产生push的viewController的retaincount的增加,在push执行之后又会回复.UIAlertview执行show方法时候,也会产生retaincount增加,所以在[alertview release] 之后还可以相应事件.

7.copy NSString 或者NSArray都继承NSCoping接口.所以在执行copy时会分配另一块空间.

要使普通的对象也执行copy方法,可让该对象的类继承NSCoping接口.然后实现- (id) copywithZone:(nszone *) zone 方法,即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值