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

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】)