我可以提前释放自动释放对象吗?

时间:2010-05-04 23:54:12

标签: objective-c memory-management autorelease nsautoreleasepool

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

[[NSArray arrayWithCapacity:100] release];

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

3 个答案:

答案 0 :(得分:7)

当对象通常被自动释放时,它可能会崩溃。 autorelease表示“延迟发布”,因此会在稍后发布。由于在手动释放对象后,该对象将不会存在,因此运行时会将-release消息发送到您现在已解除分配的对象,因此可能会崩溃。

修改:请注意,如果您-retain自动释放的对象,您必须-release他们:您正在拥有所有权。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果您不希望该对象进入自动发布池,您可以执行手册allocinitWithCapabity。如果你这样做,你必须在某个时候手动release