阅读完“内存管理指南”后,我试图了解这里发生的事情我的理解“到目前为止”是......
- (EngineClass *)engine {
return [[engine retain] autorelease];
}
我是在正确的轨道上吗?
欢呼 - 加里 -
答案 0 :(得分:1)
我不确定我会说保留是“记录我们正在制作一个指向该对象的新指针。”
retain-autorelease对用来表示还有另一个对返回值感兴趣的对象,所以它需要至少保持那么长,但是另一个对象没有正确拥有返回值。如果没有保留,如果执行此方法的对象在之后立即被释放,则引擎可能没有任何其他所有者,并且也将立即解除分配。这不是预期的行为。这样做会导致对象的所有权在自动释放池耗尽之前不会消失。