(iOS开发)之内存管理

2020-08-11 17:56:57 浏览数 (1)

1.内存管理是什么?

内存管理,就是对内存资源进行优化。

2.内存管理的三种方法?

Objective-C的内存管理主要有三种方式ARC(自动内存计数)、MRC(手动内存计数)、内存池。

3.MRC是什么?管理原则是什么?存在的问题?

MRC,全称MannulReference Counting,手动内存管理 (手动引用计数),需要程序员手动的创建对象申请内存,然后再手动的释放。

MRC管理内存的原则:谁创建,谁释放,谁管理的原则。

也就是说,在使用的过程中,谁retain,谁release;或者谁alloc,谁release。

在使用MRC时,当引用计数为0时,必须回收,引用计数不为0,则不回收;如果内存计数为0了,没回收,会造成内存泄露。 如果想使用已经创建好的某个对象(别人创建的),不能直接拿过去用,需要先retain(让计数 1),用完之后应该release(计数-1),否则会造成野指针。

4.ARC是什么?

ARC是iOS 5推出的新功能,全称叫Automatic Reference Counting,自动引用计数。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。

5.内存池是什么?

autorelease类似于release,但是不等同于它,release调用后引用计数马上-1。

autorelease是在创建对象的时候写的,表示加入自动释放池,当释放池销毁时,才调用引用计数-1。

自动释放池,需要手动创建。

当调用[pool drain]方法时,会调用池中得全部对象,release掉他们。

0 人点赞