美文网首页
1. 内存管理:手动内存管理\\ARC

1. 内存管理:手动内存管理\\ARC

作者: nonoBoy | 来源:发表于2017-01-02 13:45 被阅读14次

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

    [obj release] // retaincount - 1
    [obj retain] //retaincount + 1
    

    dealloc函数,当一个对象要被销毁的时候,系统会自动调用dealloc函数,通知对象你将要被销毁
    1.2 单个对象的内存管理分析
    野指针操作,内存泄漏

    void test()
    {
        Person *p = [[Person alloc] init];
        p.age = 10;
        NSLog(@"%@", p);
        [p release];
        [p run]; //EXCESS_BAD_ACESS 访问了不可访问的内存空间
        //防止野指针错误: p = nil;
    }
    

    内存泄漏的几种情况:
    内存的Definition:不再被使用的对象,一直在内存中没有被销毁;
    (1)retain count != 0 就会一直存在在内存中

    ....

    @autorelease
    {
      ...
    }
    

    对象存入自动释放池,当这个池子被销毁的时候他会对池子中所有的对象进行一次release操作

    相关文章

      网友评论

          本文标题:1. 内存管理:手动内存管理\\ARC

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