gpt4 book ai didi

ios - 圆弧错误 : cannot capture __autoreleasing variable in a block

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

我正在尝试将旧的非 ARC 项目转换为 ARC,但出现此编译错误:“无法在 block 中捕获 __autoreleasing 变量”

- (void)animateViewController:(__autoreleasing animatingViewController *)viewController {   //[[viewController retain] autorelease]; // I replaced this with __autoreleasing        [UIView animateWithDuration:0.14 animations:^{            [[viewController view] setAlpha:0.0];        } completion:^(BOOL finished) {            [viewController.view removeFromSuperView];        }];}

最佳答案

由于该 block 捕获并保留了 viewController 参数,因此没有必要保留自动释放对象。生命周期会延长,直到动画结束,因为完成 block 会保留在 Controller 上。

只需删除 __autoreleasing 说明符即可。

如果在另一种情况下,您真的必须保留自动释放一个实例,您可以将它分配给一个id __autoreleasing __attribute__((unused)) 局部变量。但这应该是一种非常罕见的情况,可能表明您的设计存在缺陷。

关于ios - 圆弧错误 : cannot capture __autoreleasing variable in a block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712253/

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