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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容