一、Objective-C 内存管理的对象
1、内存管理的对象主要有两类:
①基本数据类型:int 、float、 struct 等。
②引用类型:继承自NSObject类的所有OC对象。
第一种基本数据类型不需要我们管理,第二种需要管理。
2、管理内存的原理:
①值类型一般都会被放入栈中(先进后出),引用类型会被放到堆中,当给对象分配内存空间时,会随机从内存当中开辟空间,对象和对象之间可能会存在很多碎片,这些碎片空间需要我们管理。
②栈内存从性能上来说优于堆内存,数据量过大的时候,我们会把数据存入堆中,然后在栈中存放堆的地址,这样调用数据的时候,就可以快速的通过栈中的地址拿到堆中的数据。
③装箱:把int等包装成NSNumber(会降低性能);
拆箱:把NSNumber转化为float等 (注意类型错误时候的安全性问题);
装箱和拆箱会增加代码的运行时间,降低代码可读性,影响性能。
二、内存管理方式
主要是MRC和ARC管理方式;
三、MRC与ARC混编
在ARC项目中,对MRC文件可以添加 -fno-objc-arc标识;在MRC中,对ARC的文件可以添加 -fobjc-arc 的标识。(或者可以把MRC文件转为ARC,现在多用ARC,但是有些第三方框架还是MRC的需要处理);
网友评论