您的位置:首页 > 移动开发 > IOS开发

《iOS总结》OC内存管理-MickyChiang

2015-03-09 15:10 148 查看
经常会在笔试面试中遇到内存管理的问题 下面总结一下内存管理的知识点= =

问题:

请简述OC内存管理机制

答:

OC采用垃圾回收机制和引用计数机制来管理内存。

引用计数机制分为ARC和MRC两大方面。

MRC中,创造一个对象时会采用alloc方法,这时这个对象的引用计数加1,我们称为这个对象的所有权为1。

增加一个对象的引用计数的方法还有retain、copy、new等,减少一个对象的引用计数的方法为release、autorelease。

当一个对象的引用计数增加的时候,必然要对应一个引用计数减少的方法,使其保持平衡。

当一个对象的引用计数为1的时候,我们在调用release或者autorelease的时候,系统会自动调用dealloc方法,释放对象所占用的资源。

ARC中,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。原理和MRC一样,只不过是系统来管理内存。

和内存有关的属性修饰词:retain、assign、copy、weak、strong

retain:会使对象的引用计数加1;

assign:只是简单的赋值,不会使引用计数加1;

copy:分为深拷贝和浅拷贝。

浅拷贝相当于retain,深拷贝会对copy出来的对象重新开辟一块内存空间,需要对copy出来的对象单独做内存管理。

对于不可变对象copy只做指针拷贝相当于浅拷贝。

weak:弱引用,只能给对象使用,不管理对象的内存问题。在ARC中使用,相当于assign,但是修饰的对象为空时,其指针会指向nil,防止野指针的出现;

strong:在ARC中使用,相当于retain;

unsafe_unretained与weak作用相同但是指针不会置nil,会出现野指针。

知识点:







暂时就这些= =希望大家给予补充及意见= =
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: