gpt4 book ai didi

objective-c - NSObject : retained,从数组中移除并返回自动释放,ARC怎么办?

转载 作者:行者123 更新时间:2023-11-28 22:47:34 24 4
gpt4 key购买 nike

我有以下代码:

NSObject *anObject = [[objArray lastObject] retain];
[objArray removeLastObject];
return [anObject autorelease];

对于 ARC,我不能使用保留或自动释放,但如果我:

NSObject *anObject = [objArray lastObject];
[objArray removeLastObject];
return anObject;

anObject 从数组中删除时,它的保留计数不是为 0 吗?

我发现: What's the equivalent of '[[something retain] autorelease]' in ARC?但看起来确实是一样的情况。

最佳答案

基本上,anObject 不会被释放,因为它仍然在return 语句中使用。

ARC 所做的是查看您的代码,决定您在何处使用每个变量,并在将代码编译成可执行文件。

如果你想绝对确保一个变量在临界区中存活(尽管非常很少需要这样做,当然这里也不需要),那么你可以将它明确地声明为__strong。但是请确保您了解对象之间的关系,因为您很容易破坏 ARC 的目的,从而造成保留循环和内存泄漏。

关于objective-c - NSObject : retained,从数组中移除并返回自动释放,ARC怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12812750/

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