您的位置:首页 > 其它

内存管理

2015-11-02 10:19 169 查看
1. 创建对象

1> 分配内存空间,存储对象

2> 初始化成员对象

3> 返回对象的指针地址

2. retainCount

1> 对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据,当我们的引用计数 retainCount = 0 的时候,系统会毫不犹豫回收当前对象

2>[对象 release]retainCount -1

3>[对象 retain]retainCount +1

4> 我们的引用计数retainCount =0 时,对象就被销毁了

5> dealloc函数,当一个对象要被销毁的时候系统会自动调用dealloc函数,通知对象你将被销毁

6>可以重写 dealloc 函数,(看它什么时候被调)
-(void)dealloc
{
//在对象自身被销毁之前,一定要先调用[super dealloc]释放父类中的相关对象
[super dealloc];
Nslog(@"%lu",p.retainCount);
}


3. 内存管理原则(配对原则):只要出现了 new,alloc ,retain,就一定配对出现一个 release, autorelease

4.手动内存管理的研究问题

1>野指针

(如果确定当前作用于中的对象已经不会再被使用了,为了防止野指针操作,通常我们会把不在使用的指针变量赋值为
nil)

(野指针操作,当一个对象retainCount已经为0时,调用retain方法,是不会使得对象起死回生的,同时还会发生野指针操作异常)

2>内存泄漏 (只要对象的retainCount !=0,就会一直存在在内存中,而内存泄漏指的就是,不在被使用的对象,一直在内存中没有被销毁)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: