黑马程序员技术交流社区

标题: OC内存管理一些基本概念 [打印本页]

作者: S970028126    时间: 2015-6-28 12:02
标题: OC内存管理一些基本概念
引用计数器作用:
                当使用alloc, new, copy 创建 一个新对象时,新对象的引用计数器默认1
                当引用计数器为0时,对象占用的内存会被系统回
               
        引用计数器操作:
                给对象发送一条retain消息,计数器+1;(返回对象本身)
                给对象发送一条release消息,计数器-1;
                可以给对象发送retainCount消息获得当前的引用计数器

        对象的销毁:
                当一个对象的引用计数器值为0时,那么它将被销毁,其占用的内存被系统回收
                当一个对象被销毁时,系统会自动向对象发送一条dcalloc消息
                一般会重写dealloc方法在里面释放相关资源,dealloc就像对象的遗言
                一般重写dealloc方法,就必须调用[super dealloc],并且放在最后调用
                不要直接调用dealloc方法
     retain ,release方法的基本使用
        retain:计数器加1
        release:计数器-1
        retainCount:获取当前计数器
        dealloc:当一个对象要被回收的时候,就会调用
                        一定要调用[super dealloc];
                        这句调用要放在最后面
        野指针:指向僵尸对象(不可用内存)的指针,给野指针发送消息会报错(EXC_BAD_ACCESS)
        僵尸对象:所占用的内存已被回收,僵尸对象不能在使用
        空指针:没有指向任何东西的指针(存储的东西是nil,NULL,0),给空指针发送消息不回报错
        retain方法会返回对象本身
        如果你通过alloc,new,或[mutable]copy 来创建一个对象,就必须调用release或autorelease
        换句话说,不是你创建的,就不用你去[auto]release
        只要你调用了retain,无论这个对象是如何生成的,你都要调用release
总结:
        1.想使用某个对象,就应该让对象的计数器+1,(让计数器做一次retain操作)
        2.不想再使用某个对象,计数器-1,(release)
        3.谁retain,谁release
        4.谁alloc,谁release







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2