iOS之一则形象说明,完美诠释内存管理机制
来源:互联网 发布:网络短信免费发送 编辑:程序博客网 时间:2024/06/08 09:23
经历过MRC编程的同学,相信对iOS的内存管理机制都曾经头疼不已,MRC主要采用的引用计数的方式管理内存,学习MRC,最为关键的是如何理解引用计数器。
引用计数(Reference Count)
在引用计数中,每一个对象负责维护对象所有引用的计数值。当一个新的引用指向对象时,引用计数器就递增,当去掉一个引用时,引用计数就递减。当引用计数到零时,该对象就将释放占有的资源。
为了让初学者更好更形象地理解引用计数器,很多大神、老师为此花了不少时间和精力。记得当年学习千X教程时,老师举了一个多人遛狗的故事:当有人引用对象,相当于在狗圈栓上一根绳子,多人各自用绳子遛狗,当最后把绳子都拿掉,这狗没人看管了,内存就需要被释放掉。
道理虽然浅显易懂,但总觉得比喻不恰当,生活中不可能多人用绳子遛同一条狗啊,哈哈。。。最近发现《Pro Multithreading and Memory Management for iOS and OS X》里面讲的例子更加恰当,更加贴近生活,故与大家分享一下:通过开关房间的灯为例来说明引用计数机制
图中,“需要照明的人数”即对应我们要说的引用计数值。
- 第一个人进入办公室,“需要照明的人数”加1,计数值从0变为1,因此需要开灯;
- 之后每当有人进入办公室,“需要照明的人数”就加1。如计数值从1变成2;
- 每当有人下班离开办公室,“需要照明的人数”加减1如计数值从2变成1;
- 最后一个人下班离开办公室时,“需要照明的人数”减1。计数值从1变成0,因此需要关灯。
在Objective-C中,”对象“相当于办公室的照明设备,”对象的使用环境“相当于进入办公室的人。上班进入办公室的人对办公室照明设备发出的动作,与Objective-C中的对应关系如下表
使用计数功能计算需要照明的人数,使办公室的照明得到了很好的管理。同样,使用引用计数功能,对象也就能得到很好的管理,这就是Objective-C内存管理,如下图所示
阅读全文
0 0
- iOS之一则形象说明,完美诠释内存管理机制
- Mac OS X / IOS 内存管理机制简要说明
- iOS内存管理机制
- ios内存管理机制转载
- ios中的内存管理机制
- 【iOS开发】 内存管理机制
- ios内存管理机制
- iOS - 内存管理机制
- iOS中的内存管理机制
- ios内存管理机制
- IOS内存管理机制
- ios内存管理机制
- IOS内存管理机制
- ios内存管理机制
- ios框架内存管理机制
- iOS 内存管理机制
- iOS内存管理机制
- iOS 内存管理机制
- ubuntu 16.04 搭建 pptp vpn
- 六.scrapy crawlspider
- Makefile:160: recipe for target 'all' failed (Ubuntu 16.06 + Opencv3.2)解决办法
- VC++常用命名法和宏定义
- 设计模式->行为型模式->状态模式
- iOS之一则形象说明,完美诠释内存管理机制
- Java常量的探索
- 浅谈协方差矩阵
- 马里奥派对
- Python中的列表方法
- AngularJS—拦截器和好棒的例子
- 阿里巴巴矢量图的使用
- HOG Matlab代码 3——关于 HOG 代码 的一些解释 1&2
- 文章标题