Por qué en Swift 4 está obsoleto el @objc implícito y cómo solucionarlo?
¡Hola a todos! Recientemente actualicé mi proyecto de Swift 3 a Swift 4 (usando Xcode 9 beta) y me encontré con un montón de advertencias. El compilador dice algo como: «The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please minimize deprecated @objc inference...»
Antes escribía código en Swift 3, y funcionaban los selectors para botones, target-action, así como métodos que se llamaban desde Objective-C. Por ejemplo, este código simple funcionaba sin problemas:
```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")
}
}
```
Después de actualizar a Swift 4, recibo una advertencia en la línea con `#selector(buttonTapped)`. Entiendo que esto está relacionado con las nuevas reglas de inferencia de `@objc`, pero no lo entiendo del todo. Por qué