iOS Swift 3架构问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS Swift 3架构问题相关的知识,希望对你有一定的参考价值。
我正在努力找到解决我遇到的经常性问题的最佳解决方案,每次都解决不同的问题。
想象一下,我有几个步骤的表格(比如2开始)
我的代码结构是:
class SuperStepViewController: UIViewController {
//Some generic Stuff
func continueAction(sender : AnyObject?) {
//NOTHING
}
}
class Step1ViewController: SuperStepViewController {
override func continueAction(sender : AnyObject?) {
//DO SOME USEFULL STUFF
}
}
class Step2ViewController: SuperStepViewController {
override func continueAction(sender : AnyObject?) {
//DO SOME USEFULL STUFF
}
}
我想要的是改变这段代码,不在continueAction
中实现SuperViewController
函数,因为它没有默认实现。
初看起来,我认为protocol
是个好主意。如果我把continueAction
放在一个必需的协议中,我将有一个编译时错误,这就是我想要的。
protocol StepProtocol {
func continueAction()
}
class SuperStepViewController: UIViewController {
//GENERIC
}
class Step1ViewController: SuperStepViewController, StepProtocol {
func continueAction(sender : AnyObject?) {
//DO SOME USEFULL STUFF
}
}
class Step2ViewController: SuperStepViewController, StepProtocol {
func continueAction(sender : AnyObject?) {
//DO SOME USEFULL STUFF
}
}
但这还不够,我想在我对superview控制器进行子类化时立即生成这个编译。我知道Java就像抽象类一样。
class Step3ViewController: SuperStepViewController {
//NO continueAction implementation => No compilation error
}
有人有想法吗?
答案
不,这在Swift中是不可能的。 Swift不支持此类活动。
以上是关于iOS Swift 3架构问题的主要内容,如果未能解决你的问题,请参考以下文章
如何将这个 Objective-C 代码片段写入 Swift?