【发布时间】:2016-03-17 21:18:39
【问题描述】:
假设我有结构:
class A: UIViewController {
}
class C {
}
class B: A, P {
typealias T = C
}
protocol P: class {
typealias T
}
extension P {
func initP() {
print("test")
}
}
是否可以在不修改 B 的情况下调用 initP?其他任何东西都可以修改。 我正在尝试创建类似通用抽象类的东西。系统(A,P)是基础。 (B, C) -- 具体实施。方法 initP 对于所有实现都是完全相同的。这就是为什么我试图避免在植入中调用它。另一方面,它使用 P 中的方法和类型。这就是为什么我不能简单地在 A 中调用它。 首先,我尝试使 A 通用,但在这种情况下,如果 B 作为情节提要中的场景类传递,则应用程序在运行时崩溃
【问题讨论】:
-
如给定的那样,您的第一个代码块不会编译,因为
initialize是一个类函数,initP是一个实例函数,因此initialize不能调用initP跨度> -
同意。这是艰难的一天,我错过了它是静态的。但是,是否可以在给定限制的情况下从第二个块调用 initP?
-
我已修改问题以显示我的真正问题。
-
我不确定你想打电话给
initP -
当类 B 被实例化时。实际上,如果在 viewDidLoad 或任何其他 UiViewController 生命周期方法上调用它是可以接受的。
标签: swift oop swift2 swift-protocols