Avatar ·

Как создать слабую ссылку на протокол в чистом Swift (без @objc)

```html مرحباً بالجميع! أنا مبتدئ في Swift وواجهت مشكلة أثناء تنفيذ نمط المفوض (delegate). لدي بروتوكول `MyDelegate` وفئة `ViewController`، والتي يجب أن تكون مفوضة لفئة أخرى `Service`. أريد أن تكون الخاصية `delegate` في `Service` مرجعاً ضعيفاً (weak) لتجنب الدورة القوية من المراجع وتسرب الذاكرة. هذا هو الكود الخاص بي: ```swift protocol MyDelegate { func didSomething() } class Service { weak var delegate: MyDelegate? // خطأ: 'weak' cannot be applied to non-class type 'MyDelegate' func performTask() { delegate?.didSomething() } } class ViewController: MyDelegate { func didSomething() { print("تم تنفيذ المهمة!") } } ``` Xcode يعطي خطأ: `'weak' cannot be applied to non-class type 'MyDelegate'`. أفهم أن `weak` يعمل فقط مع الأنواع المرجعية (الفئات)، لكن البروتوكولات يمكن أن تتبناها الفئات والهياكل. كيف يمكنني جعل المرجع الضعيف على البروتو ```