面试题 ARC

什么是ARC ?ARC主要解决什么问题?

ARC:自动引用计数。

要点。。当对象被创建时 retain count+1, 当对象被release时 retain count-1,

当retain count =0时 对象被销毁。

程序中加入autoreleasepool  会自动加上 atorelease方法 。当retain count=0时  对象被自动销毁。

ARC之前是MRC 手动内存管理。MRC 缺点:

1.当释放一个堆内存之前首先要确定,指向这个堆得指针被release(避免提前释放)。

2.释放指针指向的堆空间,首先要确定都有哪些指针指向这个堆。这些指针只能释放一次(谁创建谁释放)。

3.多模块时,一个对象可能被多个模块创建,不能确定最后有谁去释放。

4.多线程时,不知哪个线程最后使用完毕。

堆栈:1.栈是线性结构  先进后出,有系统自动分配速度较快。受制于最初定义的高位地址。

        2.堆是树形结构,由new随机分配的内存,速度较慢,受制于虚拟内存大小。需要手动释放内存否则造成内存泄露。

 

posted @ 2016-08-04 15:11  藏无草  阅读(264)  评论(0)    收藏  举报