viewWillDisappear()等方法是否需要override关键字?

时间:2018-02-13 11:53:07

标签: ios swift events override viewcontroller

将一个方法(如viewWillAppear())添加到ViewController时,是否需要在方法上使用override关键字?

在ViewController中,我添加:

func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    NotificationCenter.default.addObserver(self, selector: #selector(doStuff), name: .UIApplicationWillResignActive, object: nil)
}

...而XCode(令人惊讶的是?)没有抱怨/警告。

但是,如果我将其更改为:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    NotificationCenter.default.addObserver(self, selector: #selector(doStuff), name: .UIApplicationWillResignActive, object: nil)
}

...然后XCode说:

  

方法'viewWillAppear(animated :)'的参数名称与重写方法'viewWillAppear'的参数名称不匹配...插入'_'

... ,如果我修好了,那么一切都很好, 但是我只是好奇它会被认为是可以的是在第一位?

我原本只期望一种选择,而不是两种。

你可以解释一下吗?因为据我所知,文档没有解释这一点。

注销,

困惑的Boober Bunz。

2 个答案:

答案 0 :(得分:2)

Xcode没有抱怨的原因是因为viewWillAppearviewWillAppear中的UIViewController签名不同。您的版本的签名是

viewWillAppear(animated:)

而在UIViewController中声明的那个是:

viewWillAppear(_:)

所以最后你要创造一种全新的方法。这与任何UIViewController方法都不冲突,因此即使您不写override,Xcode也不会抱怨。

回答你的问题是否可以":如果您希望在视图出现时运行您的代码,那就不行了。如果您不关心viewWillAppear中的代码,这没关系。

答案 1 :(得分:0)

只需添加下划线,就我而言,这是最终的更新方法:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    cameraSessionController.startCamera()
}