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

Objective c 我可以提前释放自动释放对象吗?,objective-c,memory-management,autorelease,nsautoreleasepool,Objective C,Memory Management,Autorelease,Nsautoreleasepool,i、 e.如果我这样做,是否会导致对象立即释放,而不必由池释放 [[NSArray arrayWithCapacity:100] release]; 在文档中找不到关于这一点的明确解释。我现在意识到这很愚蠢,我不应该发布我不拥有的东西。当对象正常自动释放时,它可能会崩溃自动释放表示“延迟释放”,因此将在稍后释放。由于该对象在以后手动释放时将不存在,因此运行时可能会将-release消息发送到现在已解除分配的对象,从而导致该对象崩溃 编辑:请注意,如果您-保留自动释放的对象,则必须-释放它们:您

i、 e.如果我这样做,是否会导致对象立即释放,而不必由池释放

[[NSArray arrayWithCapacity:100] release];

在文档中找不到关于这一点的明确解释。

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

当对象正常自动释放时,它可能会崩溃<代码>自动释放表示“延迟释放”,因此将在稍后释放。由于该对象在以后手动释放时将不存在,因此运行时可能会将
-release
消息发送到现在已解除分配的对象,从而导致该对象崩溃


编辑:请注意,如果您
-保留自动释放的对象,则必须
-释放它们:您正在获取所有权。

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

假设(无论出于何种原因),我确实希望它立即释放。“[[obj retain]release]”是一个有效的选项吗?不是。在这种情况下,您应该将整个内容包装在@autoreleasepool{}中,以创建和销毁自动释放发生在其中的池。同意,将整个内容包装在@autoreleasepool中