我必须使用返回类型static
修改现有的Self
方法。
我正在使用Self
,因为它也需要用于A
的子类。由于修改可能需要调度同步块来为返回者创建数据,因此我必须引入类型为Self
的局部变量。
错误:
'自'仅在协议中或作为类中方法的结果;
class A {
//...
}
class B:A {
//...
}
extension A {
static private func foo() -> Self {
var myVar: Self? //Error: 'Self' is only available in a protocol or as the result of a method in a class;
// Get data for myVar, potentially in a dispatch sync block on another queue
guard let safeVar = myVar else {
return someGarbagr
}
return myVar
}
}
预期用途:
func someFunctionSomewhere() {
let instanceOfB = B.foo()
// use instanceOfB
}
我已经尝试过所有我能想到的:
type(of:Self)
Self.Type
...
我想避免将其修改为通用方法,原因有几个。主要原因是我们必须明确提到类型以使泛型版能够引用返回类型:
let instanceOfB: B = B.foo()