OC 内存管理法则

1.allocnewcopy来创建一个对象,那么你必须调用releaseautorelease。换句话说,不是你创建的,就不用你去释放。(谁创建谁释放,对象所有权负责释放)

2.如果你在一个class的某个方法中alloc一个成员对象,且没有调用autorelease或及时releaase, 那么你需要在这个类的dealloc方法中调用release;如果调用 了autorelease,那么在dealloc方法中什么 都不需要做。

3.尽量用sel.xxx = xxx来对对象进行赋值操作,在对象不用的时候也可以用self.xxx = nil来对其释放

注意下面这个例子里,你无需保留新建的数值,因为数组会帮你保留。

 NSMutableArray *array;

int i;

// …

for (i = 0; i < 10; i++) 

{

NSNumber *n = [[NSNumber alloc] initWithInt: i];

[array addObject: n];

[n release];

}

本例中,在for循环里你需要给n发送一个-release消息,因为你需要始终在-alloc之后将n的数量保持为1。这么做的原因是当其通过-addObject:方法被添加至数组中时,数组已经将其保存起来。即使你释放了n,但是这个数字由于已经保存在数组里,所以不会被释放。

为了了解这些,假设你自己就是编写数组类的人。你不希望接收的对象未经你同意就消失,所以你会在对象传递进来时,对其发送一个-retain消息。如果他们被删除,你同时也要对应地发送一个-release消息。在你自己-dealloc时,你也要给你收到的所有对象发送一个-release。

转载于:https://www.cnblogs.com/X-Code/archive/2013/01/21/2870491.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值