ios - 如何保留对符合 Swift 协议(protocol)的类对象的引用

标签 ios objective-c swift factory-pattern swift-protocols

也许我仍在以 Objective-C 的方式思考。我想注册要在工厂模式中使用的类。这些类符合如下协议(protocol):

protocol URLNavigation: class {
  static func canHandle(url: URL) -> Bool
  static func instantiate(with url: URL) -> UIViewController?
  var url: URL? { get set }
}

然后在我的工厂类中有类似的东西:

var registeredTypes: [UIViewController.self & URLNavigation]

但我知道上面这行是不正确的。我试图保留对将用于实例化这些类实例的类对象的引用。

我还想知道如何使用这个“registeredTypes”数组中的元素实例化它们。

我希望大家清楚我要完成的任务。也许还有另一种方法?

最佳答案

你可以这样做。

var registeredTypes: [(UIViewController & URLNavigation).Type].

关于ios - 如何保留对符合 Swift 协议(protocol)的类对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55098075/

相关文章:

IOS发送post方法数据可以在php中作为get方法访问

iPhone内存管理: No Need to Clean Up and Release Retained Objects on App Quit?

ios - 在 iOS 中以后台模式运行任务

swift - 如何使用 POST 方法 swift 在 header 字段中传递 token

ios - iOS 上的 Instapaper 如何嵌入 YouTube 视频?

ios - CALayer 如何在其子层之间转换点?

ios - 向 tableView 添加行不起作用

swift - 为什么一个简单的 Swift 算术运算编译这么慢?

ios - 使用 setToolbarItems 时如何控制布局?

objective-c - iOS:在 View 之间传递数据