1 / 6
文档名称:

apple iOS开发指南 内存管理工作原理.pdf

格式:pdf   大小:283KB   页数:6页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

apple iOS开发指南 内存管理工作原理.pdf

上传人:rovend 2021/5/19 文件大小:283 KB

下载得到文件列表

apple iOS开发指南 内存管理工作原理.pdf

文档介绍

文档介绍:让我们从后面开始,当垃圾收集被关掉时对象销毁的方式。在此背景下 Cocoa 和
Objective-C 选择一个自动的,策略驱动的过程来保持对象的存在并在不再被需要的时候销
毁它们。
这个过程和策略依赖于引用计数的概念。每个 Cocoa 对象携带一个整数用来指示对其
存在感兴趣的其它对象的数目 。这个整数被称为对象的保留数 (retain count)(“retain”用来避
免和术语“reference”重叠)。 当你创建一个对象时,或者通过一个类工厂方法或者使用 alloc
或 allocWithZone: 类方法, Cocoa 做了一些很重要的事情:
它设置对象的 isa 指针- NSObject 类的唯一公共成员变量-以指向这个对象的类,这样
把这个对象集成到运行时视图类层次。 (参见对象创建“Object Creation”获取更多信息)
它设置对象的保留数 (retain count)- 一种由运行时管理的隐藏的成员变量 - 为1。(这里
假设一个对象的创建者对其存在感兴趣 )
在对象分配后,你一般会设置它的成员变量为一个合理的初始值 。 (NSObject 声明 init
方法作为这个目的的原形 )。 这个对象现在已经可以使用了 ;你可以发送消息给它,把它传
递给其他对象,等等。
注意: 因为一个初始化器可以返回一个不是显式声明的那个对象 ,惯例是嵌套 alloc 消
息表达式在 init 消息里(或者其他初始化器)- 比如:
1 <code>id anObj = [[MyClass alloc] init];</code>
当你释放一个对象- 也就是,发送一个 release 消息给它 – NSObject 减少其保留数。
如果这个保留数从1变成0,这个对象会被释放。释放分成两个步骤。首先,对象的 dealloc 方
法被调用来释放成员变量并动态释放分配的内存 。然后操作系统销毁对象自身并回收该对象
曾经占用的内存。
重要: 你永远不该直接调用一个对象的 dealloc 方法。
要是你不想一个对象马上消失 ?如果你在从别处接收到一个对象时给它发送了一 个
retain 消息,这个对象的保留数(retain count)被增加为2。现在在释放之前需要两个 release
消息。图2-4 图示了这个相对简化的场景。
Figure