gpt4 book ai didi

ios - 在从 block 运行的方法中对 self 的强引用

转载 作者:行者123 更新时间:2023-11-29 10:31:58 25 4
gpt4 key购买 nike

所以,我知道如果你在 self 中保存一个 block ,然后在该 block 中访问 self 你需要创建和使用类似 __weak 的东西id weakSelf = self;.

我的问题是,这是否也扩展到从该 block 调用的函数?如,以下是否会导致保留周期:

self.block = ^{ [weakSelf myFunction]; }
- (void) myFunction { self.counter++; }

感谢您的宝贵时间!

最佳答案

这不会创建循环保留,因为方法中的 self 实际上是 Objective C 运行时传递的参数(使用 objc_msgSend 等)。因此,让我们考虑您的代码示例中可能出现的两种情况。由于持有对象的释放,weakSelf 已被清零 - 传递给 nil 的消息将被忽略。 weakSelf 未归零,在这种情况下,它由 Objective C 运行时作为其 self 参数传递给消息。

关于ios - 在从 block 运行的方法中对 self 的强引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172585/

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