Objective-C的内存管理简述

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

序言:::

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

正题

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS内存管理 概述 什么是内存管理 应用程序内存管理是在程序运行时分配内存(比如创建一个对象,会增加内存占用)与...
    蚊香酱阅读 11,005评论 8 119
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 6,046评论 1 16
  • 前言 伴随着iOS5的发布,在Xcode4.2中加入了一个振奋人心的新特性。ARC,开启这个特性后,帮我们省去了许...
    Bestmer阅读 2,985评论 0 3
  • 内存管理是程序在运行时分配内存、使用内存,并在程序完成时释放内存的过程。在Objective-C中,也被看作是在众...
    蹲瓜阅读 8,409评论 1 8
  • 每个人心中呢,或多或少会有自己喜爱、崇拜的名人、偶像。有时总想,他们明明都是陌生人,却偏偏占据了我们生活的一部分,...
    世勋3e1a6ed阅读 1,807评论 1 1