Ado*_*els 5 types protocols weak-references swift
我想定义一个在Viper架构中使用的协议,使用具有弱属性的协议在Viper组件之间建立连接,但是我收到以下错误消息:
'weak'可能只适用于类和类绑定协议类型,而不是'Self.ViperViewClass'
protocol ViperPresenter: class {
associatedtype ViperViewClass
weak var view: ViperViewClass! { get set }
}
Run Code Online (Sandbox Code Playgroud)
Ham*_*ish 11
协议当前不能要求将属性实现为weak存储属性.
虽然目前允许weak和unowned关键字用于属性要求,但它们没有任何效果.以下是完全合法的:
class C {}
protocol P {
weak var c: C? { get set }
}
struct S : P {
var c: C? // strong reference to a C instance, not weak.
}
Run Code Online (Sandbox Code Playgroud)
这是作为一个错误提交的,SE-0186将在协议中使用weak和unowned在属性要求上使用Swift 4.1中的警告(在Swift 3和4模式下),以及Swift 5中的错误.
但是,即使协议可能需要属性被实现为weak或unowned存储性能,编译器需要知道,ViperViewClass是一个类类型(按即说
associatedtype ViperViewClass : AnyObject).
| 归档时间: |
|
| 查看次数: |
2824 次 |
| 最近记录: |