Avatar ·

为什么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`推断规则有关,但不太清楚具体原因。为什么