不知道如何指定我的问题。所以这里有一个例子:
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 中指定泛型类型,就不可能实现我想要的。
我认为你想要一个既是类又是协议的变量。这只有在 Swift 4 中使用当前语法才有可能:
let myObject: MyClass & MyProtocol
解决方法可能是使用 NSObject(因为您的类继承了 NSObject(然后,如果您需要类属性/函数,则可以将其强制转换为您的类:
var myObject: NSObject?
(myObject as? MyClass<YourGenericT>).someFunctionDeclaredInMyClass()