访问者方法对象管理?

时间:2009-09-22 09:37:41

标签: objective-c memory-management

阅读完“内存管理指南”后,我试图了解这里发生的事情我的理解“到目前为止”是......

- (EngineClass *)engine {
    return [[engine retain] autorelease];
}
  1. 我正在返回一个指向Engine对象的指针。
  2. 对象的保留计数递增到记录我们正在创建一个指向对象的新指针
  3. 通过在将来指定自动释放来平衡上述保留。
  4. 我是在正确的轨道上吗?

    欢呼 - 加里 -

1 个答案:

答案 0 :(得分:1)

我不确定我会说保留是“记录我们正在制作一个指向该对象的新指针。”

retain-autorelease对用来表示还有另一个对返回值感兴趣的对象,所以它需要至少保持那么长,但是另一个对象没有正确拥有返回值。如果没有保留,如果执行此方法的对象在之后立即被释放,则引擎可能没有任何其他所有者,并且也将立即解除分配。这不是预期的行为。这样做会导致对象的所有权在自动释放池耗尽之前不会消失。