如何保留对符合 Swift 中协议的 class 对象的引用
how do I keep a reference to a class object conforming to a protocol in Swift
也许我还在以一种Objective-C的方式思考。我想注册 classes 以用于工厂模式。 classes 符合如下协议:
protocol URLNavigation: class {
static func canHandle(url: URL) -> Bool
static func instantiate(with url: URL) -> UIViewController?
var url: URL? { get set }
}
然后在我的工厂 class 有类似的东西:
var registeredTypes: [UIViewController.self & URLNavigation]
但我知道上面这行是不正确的。我正在尝试保留对 class 对象的引用,这些对象将用于实例化那些 classes 的实例。
我还想知道如何使用此 'registeredTypes' 数组中的元素实例化这些。
我希望大家清楚我要完成的任务。也许还有另一种方法?
你可以这样做。
var registeredTypes: [(UIViewController & URLNavigation).Type]
.
也许我还在以一种Objective-C的方式思考。我想注册 classes 以用于工厂模式。 classes 符合如下协议:
protocol URLNavigation: class {
static func canHandle(url: URL) -> Bool
static func instantiate(with url: URL) -> UIViewController?
var url: URL? { get set }
}
然后在我的工厂 class 有类似的东西:
var registeredTypes: [UIViewController.self & URLNavigation]
但我知道上面这行是不正确的。我正在尝试保留对 class 对象的引用,这些对象将用于实例化那些 classes 的实例。
我还想知道如何使用此 'registeredTypes' 数组中的元素实例化这些。
我希望大家清楚我要完成的任务。也许还有另一种方法?
你可以这样做。
var registeredTypes: [(UIViewController & URLNavigation).Type]
.