[英]Swift: Class Type does not have member <var>
我有以下代码片段:
protocol UpdateUIFromNativeListenerItf {
func triggerUI()
}
class WmBuildGroupsTask{
var mUfn:UpdateUIFromNativeListenerItf?
init(){/* ... */}
// ...
class func triggerRegister( ufn: UpdateUIFromNativeListenerItf ) {
mUfn = ufn // WmBuildGroupsTask.Type does not have `mUfn`
}
}
我称之为其他班级:
var ufn:UpdateUIFromNativeListenerItf = self
WmBuildGroupsTask.triggerRegister(ufn)
如何将委托传递给静态方法?
我需要为类WmBuildGroupsTask
创建单例吗?
我也尝试编写class var mUfn:UpdateUIFromNativeListenerItf?
但得到: Class var not yet supported
谢谢,
Swift类尚不支持静态存储的属性(但),但它们在结构中。 因此,您可以创建一个内联私有结构并在其中定义您的静态属性:
class WmBuildGroupsTask{
private struct Static {
static var mUfn:UpdateUIFromNativeListenerItf?
}
init(){/* ... */}
// ...
class func triggerRegister( ufn: UpdateUIFromNativeListenerItf ) {
Static.mUfn = ufn // WmBuildGroupsTask.Type does not have `mUfn`
}
}
缺点是您必须访问以结构名称为前缀的静态属性-但我想这是一个可以接受的折衷方案。
还有另一种解决问题的明显方法:将类转换为结构,以至于仅提及它就足够了。 仅需考虑:结构和类不可互换,它们各有利弊。
您正在尝试在静态上下文中访问成员变量。 mUfn
是为您的类的实例而不是类本身存储的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.