OC内存管理

作者: CharlesAn | 来源:发表于2015-04-14 19:54 被阅读70次

    一. 基本原理

    1.什么是内存管理

    • 移动设备的内存极其有限,每一个app所能占有的内存是有限的。
    • **当app所占有的内存较多时,系统会发出内存警告,为保证系统流畅性,需要回收一些不使用的内存空间 **
    • 任何继承了NSObject的对象都要受到管制

    2.引用计数器
    引用计数器表示对象被引用的次数,即有多少程序正在使用这个对象。当引用计数器的数值为0时,对象所占用的内存就要被系统回收。

    alloc new copy //引用计数器为1
    retain //引用计数器+1
    release //引用计数器-1
    retainCount//表示获得当前的引用计数器的值 
    

    3 dealloc方法

    当一个对象引用计数器的值为0时,对象将要被销毁。
    当对象被销毁时,系统会自动向对象发送dealloc方法:
    重写dealloc方法,调用[super dealloc]
    
    

    二. 基本原则

    • 只要有人在用某个对象,那么这个对象就不会被回收
    • 想用它,就让它的计数器+1
    • 当你不想用时,就让它的计数器 -1

    1.谁retain,谁release

    只要调用retain,不管这个对象是怎么样生成的,都要掉用release
    

    2.谁创建,谁release

    通过alloc, new, copy创建对象,那就必须调用release
    

    三.内存管理方法

    set方法的内存管理 比如Person类的成员变量name

    - (void)setName (NSString *)name{
           //判断调用setter时对象是否不同
           if(name != _name){
             [_name release];//释放旧值
             _name = [name retain];//保留新值
             }
        }
         
       
    

    dealloc方法的实现

    - (void)dealloc {
        
        [_name release]; //对象临死前会给dealloc方法发射信号,将成员变量释放
        NSLog(@"%s",__FUNCTION__);//发出遗言
        [super dealloc];//子类的某些对象实例是继承自父类的。因此,我们需要调用父类的dealloc方法,来释放父类
    }
    

    相关文章

      网友评论

        本文标题:OC内存管理

        本文链接:https://www.haomeiwen.com/subject/sbxjfttx.html