一个"如何覆盖"来自另一个扩展中的Swift协议扩展的函数?

时间:2018-02-22 00:55:57

标签: ios swift protocols swift-protocols

这里讨论的应用程序首先从AppDelegate及其UIWindow直接注入一个类:

public var window: UIWindow? {
    get { return nil }
    set {
        guard _window == nil else { return }
        _window = newValue
        _window.makeKeyAndVisible()
        start()
    }
}

上面的代码存在于Cocoapod中,而start()函数的想法是它在任何代码/应用程序实现所述Cocoapod时得到一个定制的实现:

extension TheStartingClass {
    func start () {
        // do whatever needs doing...
    }
}

"TheStartingClass"是一个TheStartingClassProtocol的类,两者都在Cocoapod中。是否:

  1. 启动功能在协议和类中;或

  2. 启动功能在协议和协议扩展中;或

  3. 启动功能仅在协议扩展名

  4. 在Cocoapod之外的extension TheStartingClass重新实施时,重新实施会被忽略,我猜测是因为与the way protocols dispatch methods有关。

    如何更改此代码,以便实际调用func start ()中的extension TheStartingClass

    感谢您的阅读。

0 个答案:

没有答案