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}}==