Singleton: Difference between revisions
Content added Content deleted
(Add Racket example) |
|||
Line 860:
}
+ (SomeSingleton *)sharedInstance;
@end</lang>
Line 867:
@implementation SomeSingleton
+ (SomeSingleton *) sharedInstance
{
static SomeSingleton *sharedInstance = nil;
if (!sharedInstance) {
sharedInstance = [[SomeSingleton alloc] init];
}
Line 891:
}
- (oneway void)release
{
// prevent release
Line 902:
@end</lang>
===Thread-Safe===
Same as above except:
<lang objc>+ (SomeSingleton *) sharedInstance
{
static SomeSingleton *sharedInstance = nil;
@synchronized(self) {
if (!sharedInstance) {
sharedInstance = [[SomeSingleton alloc] init];
}
}
return sharedInstance;
}</lang>
===With GCD===
Same as above except:
<lang objc>+ (SomeSingleton *) sharedInstance
{
static SomeSingleton *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[SomeSingleton alloc] init];
});
return sharedInstance;
}</lang>
=={{header|ooRexx}}==
|