内存管理

内存管理黄金法则

The basic rule to apply is Everything thatincreases the reference counter with alloc,[mutable]copy[WithZone:] or retainis in charge of the corresponding [auto]release.

如果对一个对象使用了alloc[mutable]copyretain,那么你必须使用相应的release或者autorelease

 

 

内存管理类型定义

基本类型任何C的类型

如:intshortcharlonglong longstructenumunion等属于基本类型或者结构体

内存管理对于C语言基本类型无效

OC类型(非基本类型)

任何继承于NSObject类的对象都属于OC类型

也就是除了C之外的其它类型

 

OC内存管理

Objective-C类中实现了引用计数器,对象知道当前被引用的次数

最初对象的计数器是1

如果需要引用对象,可以给对象发送一个retaiin消息,这样对象计数器就加1

当不需要引用对象了,可以给对象发送release消息,这样对象计数器就减1

当计数器减到0,自动调用对象的dealloc函数,对象就会释放内存

计数器为0的对象不能再使用release和其他方法

 

内存管理总结

ObjectiveC的内存管理机制与.net/java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍微加了一些自动方法。

Objective-C的内存管理是基于引用计数的。要做的事情只是关注的引用,而释放内存的工作实际上由运行环境完成

在最简单的情形中,分配的(alloc)对象,或者是保留(retain)在一些地方的对象,都需要发送一个release消息。这也意味着,如果使用一次alloc,然后又retain了一次,那你需要release两次才能释放该对象的内存

 

-(vlid)setDog:(Dog *)aDog{

         If(aDog!=_dog){

                   [_dogrelease];

                   _dog= [aDog retain];

}

}

-(Dog *)dog{

         Return_dog;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值