内存管理知识点总结

1 内存管理对象

值类型和引用类型

值类型:比如 int float struct 等基本数据类型  苹果内部自己管理。原因是内存都放在栈上面,是一块连续的存储地。遵循先进后出的原则。

引用类型:是继承NSObject类的所有OC对象。内存需要自己管理。(事故重发地),原因是内存放在堆上面,彼此之间有内存空隙,不是连续的。如果不管理收回,容易引起内存泄漏或者野指针的问题。

堆内存和栈内存之间的特点

堆内存空间大,不连续

栈内存空间小,连续,数量过大影响性能

2 内存管理方式

MRC 和 ARC

MRC:手工引用计数,所有对象都需要手动的 retain release 遵守谁创建谁回收。当retaincount为0,必须回收。不然内存泄漏。继续释放,就会野指针。

ARC:自动引用计数 系统会自动的释放对象,不需要release。

内存有关的修饰符

strong : 强引用 ,ARC中使用 ,与MRC中retain类似

weak  : 弱引用 ,ARC使用 ,如果对象释放了,指向nil,避免野指针,比assign好一点。

assign : 弱引用 基本上应用于基本数据类型

retain : 持有类型,retain count + 1

copy  : 拷贝特性,对象拷贝

nonatomic : 非原子特性,多线程访问,线程不安全

atomic : 原子特性,多线程安全,

readwrite : 读写,getter setter方法

readonly :  只读  生成getter  不生成setter方法

3 MRC和ARC的混编

ARC中使用MRC的文件,MRC文件添加编译选项-fno-objc-arc

相反                                                      添加-fobjc-arc

文/SuperDKeng(简书作者)

原文链接:http://www.jianshu.com/p/d0daa511811c

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

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

相关阅读更多精彩内容

  • 为什么进行内存管理? 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时...
    天天想念阅读 4,410评论 1 6
  • 内存管理的基本范围和概念. 程序运行过程中药创建大量的对象, 和其他高级语言类似,在ObjC中对象存储在堆区,程序...
    ValienZh阅读 4,400评论 0 2
  • 为什么管理内存: 程序在运行的时候,要创建大量的对象,这些对象放在堆和栈上。(基本类型放在栈上,由系统自动管理。)...
    我是谁重要吗阅读 5,242评论 0 12
  • 内存管理ARC处理原理ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只...
    阳明AI阅读 2,934评论 0 3
  • 珍惜每一位漂亮,珍惜每一瞬吸引 若无其事的偷撩一眼,目光极快的扫过,太快看不清,那美是朦胧模糊的,恨自己记性差,却...
    不作生阅读 4,594评论 0 0

友情链接更多精彩内容