iPhone开发指南-内存管理

游客

标题:iPhone开发指南-内存管理
正文:
内存管理工作原理在内存管理的Objective-C代码里，一个Cocoa对象存在于一个生命周期，有明确的阶段。它被创建，初始化，并使用（也就是，其它对象发 送消息给它）。它还可能会被保留，拷贝，或压缩，并最终被释放和销毁。下面的讨论以图表形式对一个典型对象的生命周期进行了描述，这里还没有涉及更多的细 节。 让我们从后面开始，当垃圾收集被关掉时对象销毁的方式。在此背景下Cocoa和Objective-C 选择一个自动的，策略驱动的过程来保持对象的存在并在不再被需要的时候销毁它们。这个过程和策略依赖于引用计数的概念。每个Cocoa对象携带一个整数用来指示对其存在感兴趣的其它对象的数目。这个整数被称为对象的保留数（retain count）（&ldquo;retain&rdquo;用来避免和术语&ldquo;reference&rdquo;重叠）。 当你创建一个对象时，或者通过一个类工厂方法或者使用alloc 或allocWithZone: 类方法， Cocoa 做了一些很重要的事情： 它设置对象的isa 指针- NSObject 类的唯一公共成员变量-以指向这个对象的类，这样把这个对象集成到运行时视图类层次。（参见对象创建&ldquo;Object Creation&rdquo;获取更多信息) 它设置对象的保留数（retain count）- 一种由运行时管理的隐藏的成员变量- 为1。（这里假设一个对象的创建者对其存在感兴趣）在对象分配后，你一般会设置它的成员变量为一个合理的初始值。 (NSObject 声明init 方法作为这个目的的原形)。 这个对象现在已经可以使用了；你可以发送消息给它，把它传递给其他对象，等等。注意: 因为一个初始化器可以返回一个不是显式声明的那个对象，惯例是嵌套alloc 消息表达式在init 消息里（或者其他初始化器）- 比如： 1 &lt;code&gt;id anObj = [[MyClass alloc] init];&lt;/code&gt; 当你释放一个对象- 也就是，发送一个release 消息给它 &ndash; NSObj
[<<][[1]][2][3][>>]

查看评论(0)
发表评论

首页