لماذا تم إهمال @objc الضمني في Swift 4 وكيفية إصلاح ذلك؟
مرحباً بالجميع! لقد قمت مؤخراً بتحديث مشروعي من Swift 3 إلى Swift 4 (باستخدام Xcode 9 beta) وواجهت الكثير من التحذيرات. يكتب المترجم شيئاً مثل: «The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please minimize deprecated @objc inference...»
سابقاً كنت أكتب الكود بلغة Swift 3، وكانت تعمل لدي selectors للأزرار، 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`، لكنني لا أفهم الأمر تماماً. لماذا