【发布时间】:2011-02-15 17:13:30
【问题描述】:
即如果我这样做会导致对象立即被释放而不必被池释放?
[[NSArray arrayWithCapacity:100] release];
在文档中找不到关于此的明确解释。
【问题讨论】:
标签: objective-c memory-management autorelease nsautoreleasepool
即如果我这样做会导致对象立即被释放而不必被池释放?
[[NSArray arrayWithCapacity:100] release];
在文档中找不到关于此的明确解释。
【问题讨论】:
标签: objective-c memory-management autorelease nsautoreleasepool
当对象通常被自动释放时,它可能会崩溃。 autorelease 表示“延迟发布”,因此将发布:稍后发布。由于该对象在您手动释放时将不存在,因此您可能会由于运行时将-release 消息发送到您现在已释放的对象而崩溃。
编辑:请注意,如果您 -retain 自动释放的对象,您必须 -release 它们:您正在取得所有权。
【讨论】:
我现在意识到这很愚蠢,我不应该发布我不拥有的东西。
【讨论】:
如果您不希望对象进入自动释放池,您可以手动执行alloc 和initWithCapabity。如果你这样做,你必须在某个时候手动release它。
【讨论】: