创建后回调:如何在ctor之后立即运行代码?

时间:2016-02-21 14:49:28

标签: swift swift2

我想知道我是否可以在init()之后或deinit()之前收到回电。

我的代码中有这种重复模式。首先运行init()。下一个fire()函数运行。

class ParentViewController: UIViewController {
    @IBAction func redButtonAction(sender: AnyObject) {
        PickedColorEvent(color: UIColor.redColor(), name: "RED").fire()
    }
    @IBAction func greenButtonAction(sender: AnyObject) {
        PickedColorEvent(color: UIColor.greenColor(), name: "GREEN").fire()
    }
    @IBAction func blueButtonAction(sender: AnyObject) {
        PickedColorEvent(color: UIColor.blueColor(), name: "BLUE").fire()
    }
    @IBAction func resetButtonAction(sender: AnyObject) {
        ResetEvent().fire()
    }
}

所需代码,无需调用fire()函数。我想在创建后 autofire 。我的代码总是在主线程上运行,所以我想我可以使用一次性计时器。但是我正在寻找没有计时器的解决方案。

class ParentViewController: UIViewController {
    @IBAction func redButtonAction(sender: AnyObject) {
        PickedColorEvent(color: UIColor.redColor(), name: "RED")
    }
    @IBAction func greenButtonAction(sender: AnyObject) {
        PickedColorEvent(color: UIColor.greenColor(), name: "GREEN")
    }
    @IBAction func blueButtonAction(sender: AnyObject) {
        PickedColorEvent(color: UIColor.blueColor(), name: "BLUE")
    }
    @IBAction func resetButtonAction(sender: AnyObject) {
        ResetEvent()
    }
}

是否可以摆脱fire()功能?

更新1(感谢来自@ luk2302的反馈)

事件类继承自协议。我可以将协议更改为类或结构,并在基类中调用fire()。然而,我决定子类可以是struct还是class。

在不使用结果的情况下调用ResetEvent()时,我会得到Result of initializer is unused。我希望有一个保留关键字来抑制该警告。

0 个答案:

没有答案