gpt4 book ai didi

ios - 我是否需要保留在闭包中引用的自动释放对象?

转载 作者:行者123 更新时间:2023-11-29 02:07:52 24 4
gpt4 key购买 nike

NSString* myAutoreleasedString = [NSString stringWithString:aString];

[self performFunctionWithAsyncronousCompletion:^(void) {
NSLog(@"My String is %@, myAutoreleasedString);
}

上面的代码示例内存安全吗?闭包会自动保留和释放对 myAutoReleasedString 的引用,还是我应该自己实现?

编辑

电弧已禁用。

最佳答案

在非 ARC block (闭包)中,仅当“复制”( block 将从堆栈复制到堆)将被发送到 block 对象时,才会保留您的变量。 (因此,如果您使用修饰符副本保护您的区 block 到属性(property) - 一切都会好起来的)。同样在您的示例中 - 变量将在释放后正确释放(释放的 block 变量)。

否则你可能会崩溃(如果你的 block 将在你的变量已被删除时执行)。__block 修饰符不会告诉编译器保留对象。使用 __strong 代替。

关于ios - 我是否需要保留在闭包中引用的自动释放对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29604007/

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