A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© S970028126 中级黑马   /  2015-6-28 12:02  /  664 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

引用计数器作用:
                当使用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


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马