iOS Swift 3架构问题

时间:2016-11-07 13:33:20

标签: ios swift architecture

我正在努力为我遇到的经常出现的问题找到最佳解决方案,每次都有不同的解决方法。

想象一下,我有几个步骤的表格(比如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

}

有没有人有想法?

1 个答案:

答案 0 :(得分:0)

没有。这在Swift中是不可能的。斯威夫特不支持这种活动。