मैं एक सिंगलटन इस तरह की स्थापना की है:इंटरफ़ेस बिल्डर में सिंगलटन का उपयोग करें?
static Universe *instance;
+ (Universe *)instance { return instance; }
+ (void)initialize
{
static BOOL initialized = NO;
if(!initialized)
{
initialized = YES;
instance = [[Universe alloc] init];
}
}
- (id) init
{
self = [super init];
if (self != nil) {
self.showHistory = YES;
}
return self;
}
लेकिन अब मुझे पता है कि मैं इंटरफ़ेस बिल्डर से यह दृष्टांत करना चाहते हैं। मैं सिर्फ इतना
if (instance)
return instance;
तरह init
विधि में काटने की सोच रहा था कि यह एक बुरा विचार है? मैं आईबी को +initialize
विधि में पहले से बनाए गए उदाहरण को चुनने के लिए पसंद करूंगा।
यही वह है जो मैंने लागू करने के लिए किया था कुछ नेटवर्किंग क्लाइंट कोड का प्लगइन संस्करण जो मूल रूप से कोको ऐप में था। एक सहकर्मी इसे एक प्लगइन में चाहता था इसलिए मैं सिंगलटन मार्ग चला गया, इसलिए नेटवर्क क्लाइंट (आंतरिक रूप से) का केवल एक वास्तविक उदाहरण होगा। – ExitToShell
@invariant, इस तरह का बहुत अच्छा जवाब है जो मुझे सवाल पूछने में प्रसन्न करता है और न केवल इसे गूंगा के रूप में खारिज कर देता है। –
'+ alloc' को वापस लौटना चाहिए [[[self instance] retain] ', क्योंकि' alloc' एक स्वामित्व वाली वस्तु देता है। –