gpt4 book ai didi

cocoa-touch - 如何正确寻址 "Weak receiver may be unpredictably null in ARC mode"

转载 作者:行者123 更新时间:2023-12-03 16:02:06 25 4
gpt4 key购买 nike

我在 xcode 中打开了一个新标志,并收到警告“弱接收器在 ARC 模式下可能不可预测地为空”。这让我很困惑,因为它当然可能为零。

最佳答案

我一周前问过这个问题,但没有收到任何答复,但格雷格·帕克在邮件列表上回答了它。所以我重新发布答案。

We added this warning because we saw lots of subtle and hard to debug problems in practice.

The recommended practice is to read the weak variable into a strong local variable once, and then use the local variable.

  • Greg Parker

在我第一次回答这个问题时,我发布了类似的内容,我认为测试 nil 应该已经足够了

if (self.rootViewController) {
[self.rootViewController controllerWillChangeContent:controller];
}

问题是 self.rootViewController 可能在检查 nil 和完成调用的方法之间的空间中变为 nil。我们被告知要做的是分配一个强大的本地引用并像这样使用它

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {
RootViewController *rootVC = self.rootViewController;
if (rootVC) {
[rootVC controllerWillChangeContent:controller];
}
}

斯蒂芬·巴特勒 (Stephen Butler) 简洁地重申了此警告旨在解决的问题

What we're trying to prevent is the object instance getting deallocedwhile you're in [someMethod] because you called it off a weakreference and nothing is holding onto the object strongly.

关于cocoa-touch - 如何正确寻址 "Weak receiver may be unpredictably null in ARC mode",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11899134/

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