七十七、基础框架(三十五)内存管理-一个关于自动释放池的示例
来源:互联网 发布:c语言写文本文件 编辑:程序博客网 时间:2024/05/14 10:02
我们 来看一下 下面这个例子 以便确保 大家 都能够理解 引用次数、增加 引用次数、减少 引用次数 是 怎么一回事。
运行 这个程序后,可以得到 这样的结果:
在这个程序当中 我 创建了 一类假设出来的物件myClass。每个myClass类型的物件 都只包含 一个变量。适用于myClass这类物件的措施 都是 适用于NSObject这类物件的措施。
这个程序 创建了 一个新的myClass类型的物件objectOfMyClass,并且 将 这个物件的地址 存储 在变量objectOfMyClass当中。objectOfMyClass这个物件的引用次数 最初 为 1,因为 这个物件的地址 存储 在变量objectOfMyClass当中。objectOfMyClass这个物件 并没有自动添加 到自动释放池当中,所以 将 自动释放池 倒空后,物件objectOfMyClass这个物件的引用次数 依然 没有改变。
接着 创建了 一个新的自动释放池,并且 对 物件objectOfMyClass 采取了 autorelease这项措施,从而 将 其 添加 到自动释放池。将 物件objectOfMyClass 添加 到自动释放池后,其引用次数 还是没有改变,因为 将 物件 添加 到自动释放池 只是 为这个物件 做上 标记。
接着 对objectOfMyClass这个物件 采取了 retain这项措施,从而 将 这个物件的引用次数 增至 2。当我们 再次 倒空 自动释放池时,物件objectOfMyClass的引用次数 由2 减至了 1。
由于 在倒空 自动释放池之前,物件objectOfMyClass的引用次数 已经为 2了。而 倒空 自动释放池 仅仅 将 物件objectOfMyClass的引用次数 减到 1,所以 物件objectOfMyClass 并不会被清理掉。于是 对 objectOfMyClass这个物件 采取 release这项措施后,这个物件的引用次数 才降至0,从而 被清理掉。
- 七十七、基础框架(三十五)内存管理-一个关于自动释放池的示例
- 七十三、基础框架(三十一)内存管理-自动释放池
- IOS内存管理,ARC,MRC,自动释放池(基础)
- iOS 关于内存自动释放池的一个问题(MRC)
- 七十八、基础框架(三十六)内存管理-关于内存管理规则的概括
- OC-028.ARC自动内存管理的自动释放池
- autorelease pool的内存管理之-自动释放池
- 内存管理中自动释放池与ARC的区别
- IOS内存管理--自动释放池的实现原理
- OC手动内存管理-使用自动释放池
- 6、内存管理(自动释放池)-OC
- @autoreleasepool 创建自动释放连接池(内存管理)
- 内存管理之自动释放池
- MRC内存管理2自动释放池
- oc内存管理 ---自动释放池
- OC手动内存管理-自动释放池的销毁时机与工作过程
- OC视频笔记(数组的内存管理)(OC自动释放池)
- Qt的内存释放策略(内存自动释放机制)
- chmod----改变一个或多个文件的存取模式(mode)
- 黑白遐想的伤感情侣日志发布:故作坚强的姿态 我始终放不下来
- 算法导论-动态规划(dynamic programming)
- 正则表达式三
- 尴尬一:你认为家庭和事业之间存在不可调和的矛盾吗?
- 七十七、基础框架(三十五)内存管理-一个关于自动释放池的示例
- C/C++运算符优先级表
- EBS Form菜单栏增加选项
- Nestable 可移动的树型结构的使用(jQuery)
- 几个笔试题
- IIS7 Request format is unrecognized.
- Printf()输出格式控制
- 七十八、基础框架(三十六)内存管理-关于内存管理规则的概括
- ExtJs3.2和ExtJs3.0在reload时的区别(点击左边树的节点时右边表格中的数据是否同步的问题)