程序员

iOS内存管理

2018-03-13  本文已影响0人  BeeQiang

如果要说iOS的内存管理问题,先要知道Objective-C是一门什么样的语言 —> Objective-C是一门面向对象的语言。

我们知道在程序运行过程中要创建大量的对象,和其他高级语言类似,在Objective-C中对象时存储在堆中的,系统并不会自动释放堆中的内存(注意基本类型是由系统自己管理的,放在栈上入:int float 等)。如果一个对象创建并使用后没有得到及时释放那么就会占用大量内存。其他高级语言如C#、Java都是通过垃圾回收来(GC)解决这个问题的,但在Objective-C中并没有类似的垃圾回收机制,因此它的内存管理就需要由开发人员手动维护。今天将着重介绍Objective-C内存管理:

一、Objective-C 内存管理的对象

二、内存管理方式 主要是MRC和ARC管理方式;

autorelease方法不会改变对象的引用计数器,只是将这个对象放到自动释放池中;
自动释放池实质是当自动释放池销毁后调用对象的release方法,不一定就能销毁对象(例如如果一个对象的引用计数器>1则此时就无法销毁);
由于自动释放池最后统一销毁对象,因此如果一个操作比较占用内存(对象比较多或者对象占用资源比较多),最好不要放到自动释放池或者考虑放到多个自动释放池;
ObjC中类库中的静态方法一般都不需要手动释放,内部已经调用了autorelease方法;

三、MRC与ARC混编 在ARC项目中,对MRC文件可以添加 -fno-objc-arc标识;在MRC中,对ARC的文件可以添加 -fobjc-arc 的标识。(或者可以把MRC文件转为ARC,现在多用ARC,但是有些第三方框架还是MRC的需要处理);

上一篇 下一篇

猜你喜欢

热点阅读