即。如果我这样做会导致对象立即释放而不必由池释放?
[[NSArray arrayWithCapacity:100] release];
无法在文档中找到关于此的明确解释。
答案 0 :(得分:7)
当对象通常被自动释放时,它可能会崩溃。 autorelease
表示“延迟发布”,因此会在稍后发布。由于在手动释放对象后,该对象将不会存在,因此运行时会将-release
消息发送到您现在已解除分配的对象,因此可能会崩溃。
修改:请注意,如果您-retain
自动释放的对象,您必须-release
他们:您正在拥有所有权。
答案 1 :(得分:1)
我意识到现在这是愚蠢的,我不应该发布我不拥有的东西。
答案 2 :(得分:0)
如果您不希望该对象进入自动发布池,您可以执行手册alloc
和initWithCapabity
。如果你这样做,你必须在某个时候手动release
。