我试图将我的代码(用Swift 3编写)转换为Swift 4,因为我在需要的地方添加 @objc
. Xcode在自动修复它们方面做得相当不错,但我正在努力解决一些问题(所有使用相同的2种方法),Xcode无法帮助,它只是将 @objc
放在我的代码中 .
我在 ViewController
类中重写了一个名为 navbarRightButtonAction(button:)
的方法 .
class ViewController: PBViewController {
override func navbarRightButtonAction(button: PBAdaptiveButton) {
...
}
}
这是我收到警告的地方:
Override of instance method 'navbarRightButtonAction(button:)' from extension of PBViewController depends on deprecated inference of '@objc'
然后我认为我们的问题出现在 PBViewController
类中,如下所示:
extension PBViewController: PBNavigationBarDelegate {
func navbarRightButtonAction(button: PBAdaptiveButton) {
print("Override this method")
}
}
所以我添加了 @objc func navbarRightButtonAction(button: PBAdaptiveButton)
但它没有帮助 .
然后我查看了 PBNavigationBarDelegate
协议
protocol PBNavigationBarDelegate {
func navbarRightButtonAction(button:PBAdaptiveButton)
}
我添加了 @objc protocol PBNavigationBarDelegate
但它也没有帮助 .
我不知道如何修复弃用警告 .
1 回答
将
@objc
或@nonobjc
放在extension
前面:有关详细信息,请查看Swift Evolution的Limiting @objc Inference, SE-0160 . 它包含以下有关扩展的示例: