Swift中的Objective-C __strong等价物



在Objective-C中,我们将值强制转换为__weak,以避免在某些情况下保留循环。

这篇文章解释了为什么__strong是有用的

__weak typeof (self) weakSelf = self;
self.block = ^{
    [weakSelf methodA];        
};

我们是否特别需要Swift中的__strong自等价项,它可用吗?如果是,语法是什么?

Swift中没有什么比__strong更好的了,因为默认情况下所有变量都是强的。

以下是上述代码的Swift等价物:

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

如果您想在块的执行过程中保持self的活力,您可以执行以下操作:

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

在上面的代码中,strongSelf将在块内创建对weakSelf的强引用,这样当强引用处于活动状态时,弱引用就不会被释放(在我们的情况下,直到块完成执行)。

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

最新更新