《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,会出现野指针。
知识点:
暂时就这些= =希望大家给予补充及意见= =
问题:
请简述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,会出现野指针。
知识点:
暂时就这些= =希望大家给予补充及意见= =
相关文章推荐
- OC 内存管理基础
- 【黑马程序员】-oc中的内存管理
- 黑马程序员——OC语言------内存管理和ARC
- oc对象的内存管理
- 第05天OC语言(06):set方法内存管理
- 黑马程序员——OC热身——概述、类、内存管理
- 黑马程序员--OC学习日记-OC内存管理学习感悟
- 黑马程序员-OC内存管理的初步认识
- 谈谈OC的内存管理
- 学习OC内存管理编程心得体会
- Ryan的OC学习总结-----7 内存管理
- OC之内存管理(笔记)
- 黑马程序员——OC基础---手动内存管理
- OC----——内存管理总结
- 黑马程序员—OC语言基础—内存管理
- OC第九天:内存管理初级
- OC中的内存管理
- 进击的KFC:OC(第九天):内存管理初级
- OC基础语法学习5:内存管理(手动管理)
- 黑马程序员 OC语言 - 5 内存管理