5

即如果我这样做会导致对象立即被释放而不必被池释放?

[[NSArray arrayWithCapacity:100] release];

在文档中找不到关于此的明确解释。

4

3 回答 3

7

当对象通常被自动释放时,它可能会崩溃。autorelease意思是“延迟释放”,所以它会被释放:只是稍后。由于该对象稍后在您手动释放它时将不存在,因此您可能会由于运行时将-release消息发送到您现在已释放的对象而崩溃。

编辑:请注意,如果您-retain的对象是自动释放的,则您必须拥有-release它们:您正在取得所有权。

于 2010-05-04T23:57:25.577 回答
1

我意识到现在这很愚蠢,我不应该发布我不拥有的东西。

于 2010-05-04T23:56:19.257 回答
0

如果您不希望对象进入自动释放池,您可以手动alloc执行initWithCapabity. 如果你这样做,你将不得不release在某个时候手动操作它。

于 2010-05-05T00:07:58.837 回答