Avatar ·

Swift में सिंगलटन बनाने के लिए dispatch_once का उपयोग: सही तरीका क्या है?

सभी को नमस्ते! मैंने अभी-अभी Objective-C के बाद Swift सीखना शुरू किया है, और मुझे सिंगलटन पैटर्न को लागू करने में समस्या आ रही है। Objective-C में मैं यह सुनिश्चित करने के लिए dispatch_once का उपयोग करता था कि इनिशियलाइज़ेशन केवल एक बार हो, भले ही मल्टीथ्रेडेड वातावरण में हो। लगभग इस तरह: ``` + (instancetype)sharedInstance { static MyClass *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[MyClass alloc] init]; }); return sharedInstance; } ``` अब मैं Swift में भी ऐसा ही करने की कोशिश कर रहा हूँ। मैंने पढ़ा है कि Swift में let और static properties हैं जो डिफ़ॉल्ट रूप से thread-safe हैं। लेकिन मुझे पूरी तरह से समझ नहीं आ रहा कि यह कैसे काम करता है। मैंने इस तरह लिखने की कोशिश की: ``` class MyClass { static var shared: MyClass { dispatch_once_t onceToken dispatch_once(&onceToken) { // ... } } } ``` लेकिन Xcode शिकायत कर रहा है कि Swift में dispatch_once उपलब्ध नहीं है। मैंने देखा कि Swift 3 में इसे पूरी तरह से हटा दिया गया है।

अभी तक कोई उत्तर नहीं।

लॉग इन करें उत्तर देने के लिए

ब्लॉग