为什么Swift 4中隐式@objc被弃用以及如何修复?
大家好!我最近将项目从Swift 3升级到Swift 4(使用Xcode 9 beta),遇到了大量警告。编译器提示类似这样的信息:「在Swift 4模式下使用Swift 3的@objc推断已被弃用。请尽量减少弃用的@objc推断...」
以前我写Swift 3代码时,按钮的selector、target-action以及从Objective-C调用的方法都能正常工作。例如,下面这段简单代码运行起来毫无问题:
```swift
class MyViewController: UIViewController {
@IBOutlet weak var myButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
myButton.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
}
func buttonTapped() {
print("Button tapped")
}
}
```
升级到Swift 4后,我在`#selector(buttonTapped)`这一行收到了警告。我明白这与新的`@objc`推断规则有关,但不太清楚具体原因。为什么