将一个方法(如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。
答案 0 :(得分:2)
Xcode没有抱怨的原因是因为viewWillAppear
与viewWillAppear
中的UIViewController
签名不同。您的版本的签名是
viewWillAppear(animated:)
而在UIViewController
中声明的那个是:
viewWillAppear(_:)
所以最后你要创造一种全新的方法。这与任何UIViewController
方法都不冲突,因此即使您不写override
,Xcode也不会抱怨。
回答你的问题是否可以":如果您希望在视图出现时运行您的代码,那就不行了。如果您不关心viewWillAppear
中的代码,这没关系。
答案 1 :(得分:0)
只需添加下划线,就我而言,这是最终的更新方法:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
cameraSessionController.startCamera()
}