Swift警告:在协议中,不应将“weak”应用于属性声明。

15

看起来协议中将不再允许弱引用。那么如果我想要添加一个弱引用,我应该怎么办呢?有更好的想法吗?

protocol PipelineElementDelegate: class {
    func someFunc()
}
protocol PipelineElement {
    weak var delegate: PipelineElementDelegate? { get set}
}
2个回答

36

只需从协议中删除 weak 关键字,并在符合协议的类型中声明属性为 weak:

class SomeClass: PipelineElement {
    weak var delegate: PipelineElementDelegate?
}

0
将'objc'添加到协议定义和具体类类型中,然后可以在协议内部使用'weak'。还要确保具体类符合NSObject。
@objc protocol Calculation : AnyObject
{
  weak var viewModelDelegate: CalculationsViewModel? { get set }
}

@objc final class CalculationsViewModel: NSObject, ObservableObject
{
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接