gpt4 book ai didi

swift - Objective-C __strong 等价于 Swift

转载 作者:行者123 更新时间:2023-11-30 10:03:19 27 4
gpt4 key购买 nike

在 Objective-C 中,我们将值转换为 __weak 以避免在某些情况下发生循环引用。

This post解释了为什么 __strong 很有用

__weak typeof (self) weakSelf = self;

self.block = ^{
[weakSelf methodA];
};

我们是否特别需要 Swift 中的 __strong self 等价物并且它可用吗?如果是这样,语法是什么?

最佳答案

Swift 中没有像 __strong 这样的东西,因为默认情况下所有变量都是强变量。

下面是上述代码的 Swift 等效版本:

self.block = { [weak self] in
self?.methodA()
}

如果你想在 block 执行期间保持self存活,你可以执行如下操作:

self.block = { [weak self] in
guard let strongSelf = self else { return }
strongSelf.methodA()
}

在上面的代码中,strongSelf 将在 block 内创建对 weakSelf 的强引用,以便弱引用在强引用处于事件状态时不会被释放(在我们的例子中,直到 block 完成执行)

请注意,以上选项都不会导致保留周期

关于swift - Objective-C __strong 等价于 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37306924/

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