استخدام نمط 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` لصالح آليات أخرى؟
مثال