A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 手心的温度 中级黑马   /  2015-8-24 22:31  /  844 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

OC内存管理--MRC&ARC
MRC
@property在内存管理中的作用:
可以控制set方法的内存管理
1> retain:release旧值,retain1新值(用于OC对象);
2> assign:直接赋值,不做任何内存管理(默认,用于非OC对象类型);
3> copy:release旧值,retain新值(一般用于NSString *)。
控制需不需要生成set方法
1> readwrite:同时生成set和get方法(默认);
2> readonly:只生成get方法;
多线程管理
1> atomic:性能低(默认);
2> nonatomic:性能高
ARC
下面介绍ARC机制下的内存管理方法。首先,要了解autorelease。
autorelease方法的基本使用:
1> 给对象发送一条autorelease消息,会将对象放到一个自动释放池(autoreleasepool)中;
2> 当自动释放池被销毁时,会对池子里面的所有对象做一次release操作;
3> 会返回对象本身;
4> 调用完autorelease方法后,对象的计数器不变。
ARC的实现细节:
编译器会自动在适当地地方插入适当的retain、release、autorelease等语句;也就是说,编译器会自动生成内存管理的代码,不用程序员手动编写。
ARC注意点:
1、ARC是编译器特性,而不是运行时特性;
2、ARC不是其他语言中的垃圾回收,有着本质的区别。
ARC的判断原则:只要还有一个强指针变量指向对象,对象就会保持在内存中。
强指针:默认所有的指针变量都是强指针;被_strong修饰的指针。
弱指针:被_weak修饰的指针。
ARC使用细节:
不能调用release、retain、autorelease、retainCount
可以重写dealloc,但是不能调用[super dealloc];

4 个回复

倒序浏览
写的不错,我最近刚好在找相关资料
回复 使用道具 举报
赞,过来好好学习一下
回复 使用道具 举报
啦啦,我时来水分的!!!!
回复 使用道具 举报
每天都总结一点笔记还是很好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马