Avatar ·

استخدام نمط Singleton مع dispatch_once في Swift

مرحبًا بالجميع! لقد بدأت للتو في تعلم Swift وأحاول تنفيذ نمط Singleton لفئة ستُدير إعدادات التطبيق. في Objective-C، كنت معتادًا على استخدام `dispatch_once` لضمان أن التهيئة ستحدث مرة واحدة فقط بطريقة آمنة للخيوط. إليك مثال على كيف كنت أفعل ذلك سابقًا: ```objc + (instancetype)sharedInstance { static MyClass *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[MyClass alloc] init]; }); return sharedInstance; } ``` في Swift، أرى العديد من الأمثلة على الإنترنت، لكنها غالبًا تستخدم طرقًا مختلفة: الثوابت العامة، `private init`، الهياكل مع `static let`. ما يحيرني هو أن `dispatch_once` في Swift 3+ قد تم إعلانه كـ deprecated. كيف يمكنني إنشاء Singleton بشكل صحيح وآمن في Swift الحديث؟ هل يجب أن أقلق بشأن سلامة الخيوط؟ ولماذا توصي Apple بالتخلي عن `dispatch_once` لصالح آليات أخرى؟ مثال