viewWillDisappear() 等方法是否需要 override 关键字?
Do methods such as viewWillDisappear() require the override keyword?
将viewWillAppear()等方法添加到ViewController时,是否需要在方法上使用override关键字?
在 ViewController 中,我添加:
func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(doStuff), name: .UIApplicationWillResignActive, object: nil)
}
... 和 XCode(令人惊讶?)不 complain/warn.
但是,如果我将其更改为:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(doStuff), name: .UIApplicationWillResignActive, object: nil)
}
...然后 XCode 说:
Argument names for method 'viewWillAppear(animated:)' do not match those of overridden method 'viewWillAppear' ... insert '_'
... 如果我修复了,那么一切都很好, 但我只是好奇它是否被考虑过可以让它保持原样吗?
我原以为只有一个选项有效,而不是两个都有效。
你能解释一下吗?因为据我所知文档没有解释。
签字,
一个糊涂的傻逼。
Xcode没有投诉的原因是你的viewWillAppear
和UIViewController
中的viewWillAppear
有不同的签名。你版本的签名是
viewWillAppear(animated:)
而在 UIViewController
中声明的是:
viewWillAppear(_:)
所以最后你创建了一个全新的方法。这与任何UIViewController
方法都不冲突,所以即使你不写override
,Xcode也不会报错。
回答你是否是 "okay" 的问题:如果你希望你的代码在视图出现时是 运行 是不行的。如果您不关心 viewWillAppear
.
中的代码也没关系
只需添加下划线,在我的例子中,这是最终更新的方法:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
cameraSessionController.startCamera()
}
将viewWillAppear()等方法添加到ViewController时,是否需要在方法上使用override关键字?
在 ViewController 中,我添加:
func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(doStuff), name: .UIApplicationWillResignActive, object: nil)
}
... 和 XCode(令人惊讶?)不 complain/warn.
但是,如果我将其更改为:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(doStuff), name: .UIApplicationWillResignActive, object: nil)
}
...然后 XCode 说:
Argument names for method 'viewWillAppear(animated:)' do not match those of overridden method 'viewWillAppear' ... insert '_'
... 如果我修复了,那么一切都很好, 但我只是好奇它是否被考虑过可以让它保持原样吗?
我原以为只有一个选项有效,而不是两个都有效。
你能解释一下吗?因为据我所知文档没有解释。
签字,
一个糊涂的傻逼。
Xcode没有投诉的原因是你的viewWillAppear
和UIViewController
中的viewWillAppear
有不同的签名。你版本的签名是
viewWillAppear(animated:)
而在 UIViewController
中声明的是:
viewWillAppear(_:)
所以最后你创建了一个全新的方法。这与任何UIViewController
方法都不冲突,所以即使你不写override
,Xcode也不会报错。
回答你是否是 "okay" 的问题:如果你希望你的代码在视图出现时是 运行 是不行的。如果您不关心 viewWillAppear
.
只需添加下划线,在我的例子中,这是最终更新的方法:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
cameraSessionController.startCamera()
}