码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈OC内存管理

时间:2016-04-26 17:28:13      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

MRC(手动管理内存):

1、如果使用了alloc、new、copy、retain必须使用release、autorelease来释放这个内存

2、alloc产生一个新对象,把新对象的引用计数器设置为1,retain保留对象,使对象的引用计数器+1,release使对象的引用计数器-1

3、当对象的引用计数器变成0,就会调用dealloc函数,对象释放内存

4、对象创建的时候计数器=1,retain,计数器+1,release,计数器-1,加入数组计数器+1,数组删除对象引用计数器-1

5、property中的三个关键字assign、retain、copy、strong、weak修饰的变量的setter写法

   assign:-(void)setCar:(Car*)car   {

            _car = car;
            }

  retain:-(void)setCar:(Car*)car{

            if(_car != car){

               [_car release];

              _car = [car  retain];

            }

          }     copy只是将retain改成copy,被定义有copy属性的对象必须要符合NSCopying协议,并实现必须实现的方法,copy不对原引用计数器的值改变,生成一个新的对象,引用计数器=1

  strong:相当于retain,weak相当于assign  当一个对象不再有strong类型的指针指向它的时候 它会被释放  ,即使还有weak型指针指向它。不过strong、weak只能修饰对象。

 

ARC使用机制:不能调用dealloc,不能重写和调用retain,release,retainCount 和autorelease,同理,@selector(retain),@selector(release)这些曲线救国的方法也不能调用。 dealloc虽然能够重写,但是不能调用[super dealloc]之类的方法

   

 

浅谈OC内存管理

标签:

原文地址:http://www.cnblogs.com/xiaonizicome/p/5435813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!