Objective-C的内存管理简述

本篇文章主要是针对在iOS面试中经常问及的内存管理你是怎么理解的,这个问题做一个简单实用的总结。

序言:::

任何一门编程技术,内存这一块都是相当重要的,早期的iOS开发中内存管理是相当令人恶心的,手动管理内存,需要程序员自己亲力亲为。这就是在MRC环境下的iOS开发,这一时期的程序员是相当可苦逼的,整天在围绕着内存管理问题徘徊,那个对象的内存泄露了,那里出现空指针了等等一些列的内存问题。后来苹果公司的工程师也发现了这个问题,就专研开发,实现了自动管理内存。

正题

在MRC环境下的内存管理,由于年代久远,已经落伍了,但是这还是我们应该学习的,基础知识,现在正是引入一个内存管理之“引用计数”。
当使用alloc 、new方法或者copy消息时。对象的保留计数器值会设置为1.要增加对象的保留计数器的值,可以给对象发送一条retain 。要减少对象的保留计数器的值就可以给对象发送release消息。

当对象的引用计数值为0时,该对象被销毁。外界不能在使用,分配的内存被回收。

在ARC环境下,自动管理内存,靠的是Xcode编译器来管理内存的。原则是当一个对象没有强指针指向他的时候,编译器会在适当的时候把该对象释放掉,也就是让他的引用计数值为0,编译器帮了我们程序员一个很大的忙,给我们更多地时间来思考产品的价值而不是花费大量的经历来关注内存管理。但是在ARC环境下,只能帮我们解决百分之八十左右的内存问题。当代码中出现一些循环引用是相当头疼的事情。这就要我们程序员慢慢地积累了

你可能感兴趣的:(Objective-C的内存管理简述)