不确定如何指定我的问题。所以这是一个例子:
final class MyClass<T: MyProtocol>: NSObject {
init(something: Something<[T]>) { ... }
}
此对象(MyClass
)将位于ViewController
final class MyViewController: UIViewController {
//Should be optional, because I will assing myObject in prepareForSegue
//And I will initialize MyClass with different Objects,
//that implement MyProtocol
var myObject: MyClass?
}
但我必须指定MyClass
泛型类型,但我不会在init期间知道。
所以我的问题是可能有一个带有泛型的可选对象,将在生命周期的后期指定吗?
编辑。我认为如果不在init中指定Generic类型,就无法实现我想要的目标。
答案 0 :(得分:0)
我认为你想要一个既是类又是协议的变量。这只能在Swift 4中使用当前语法:
let myObject: MyClass & MyProtocol
解决方法可能是使用NSObject(因为你的类继承了NSObject)然后如果你需要类属性/函数,你可以将它强制转换回你的类:
var myObject: NSObject?
(myObject as? MyClass<YourGenericT>).someFunctionDeclaredInMyClass()