美文网首页
object-c 进阶二 【内存管理2】

object-c 进阶二 【内存管理2】

作者: vikin_ | 来源:发表于2016-04-03 10:23 被阅读34次

    1、对象怎么赋给另一个对象?

    我们使用最常规的方法试一下:

    NSString *str = [[NSString alloc] init];

    NSLog(@"%zd",str.retainCount);     //结果是1

    NSString *str2 = str;

    NSLog(@"%zd",str.retainCount);    //结果还是1

    这里就出现问题了,根据官方说话,第二次打印retainCount的时候长度应该是2才对;

    解析:问题就出在赋值上,对象赋值需要使用:

    NSString *str2 = [ str retain ];

    NSLog(@"%zd",str.retainCount);    //结果为2

    2、怎么删除一个对象,并对该对象内存空间进行释放

    [ str1 release ]; //释放str的内存空间

    str1 = nil      //将该对象置为空

    NSLog(@"%zd",str.retainCount);    //结果就是1

    3、回收内存,销毁类空间

    在类中使用析构方法进行对内存的回收

    - (void) dealloc{

      [str release];      //释放所属变量成员,否则会内存泄露

      str = nil;    //释放所属变量成员,否则会内存泄露

       [super dealloc]   //执行父类的析构方法进行回收

    }

    4、内存管理的黄金法则

    在对对象进行alloc、retain、copy、mutableCopy的时候需要对该对象进行release或则autoRelease;

    相关文章

      网友评论

          本文标题:object-c 进阶二 【内存管理2】

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