gpt4 book ai didi

objective-c - 返回自动释放是 objective-c 中的错误吗?

转载 作者:太空狗 更新时间:2023-10-30 03:36:22 25 4
gpt4 key购买 nike

我是 objective c 的新手,正在尝试了解如何/何时调用 autorelease。我了解以下简单用例:

- (void) foo {
Bar *b = [[[Bar alloc] init] autorelease];
[self doSomething:b];
}

下一个案例呢——这是一个错误吗,因为对象将在离开 makeBar 的范围后立即释放?

-(Bar*) makeBar
{
return [[[Bar alloc] init] autorelease];
}

如果调用者执行保留怎么办?

Bar *b = [[self makeBar] retain];

谢谢,-埃里克

最佳答案

在您的第二个示例中,您返回的匿名对象不会在执行离开 makeBar 的范围时立即释放,而是在运行循环的下一次迭代中释放。这将使您有机会在调用 makeBar

的任何方法中 保留

所以你的最后一个例子是好的,因为保留计数不会低于 0。

你遇到问题了吗?

关于objective-c - 返回自动释放是 objective-c 中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com