Avatar ·

لماذا تم إهمال @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`، لكنني لا أفهم الأمر تماماً. لماذا