457Singleton Classes and Shared Resources in Objective-C
Resource.h
#import
@interface Resource : NSObject {
float myValue;
}
@property float scale;
+ (id)shared;
@end
Resource.m
#import "Resource.h"
@implementation Resource
@synthesize scale;
- (id)init {
scale = 1.0f // my default value
}
+ (id)shared {
static Resource *sharedResource = nil;
if (!sharedResource) {
sharedResource = [[self alloc] init];
}
return sharedResource;
}
@end
An now it can be used like the following:
Resource *r = [Resource shared];
NSLog(@"Resource Test: %f", [r myValue]);
// Resource Test: 1.000000
[r setMyValue:2.0];
NSLog(@"Resource Test: %f", [r myValue]);
//# Resource Test: 2.000000
Resource *s = [Resource shared];
[s setMyValue:2.111];
NSLog(@"Resource Test: %f", [s myValue]);
// Resource Test: 2.111000
NSLog(@"Resource Test: %f", [r myValue]);
//Resource Test: 2.111000
Note that the values stays constant, even if another instantionation occurs. I guess that's what Singleton classes are all about.
Adapted from Scott Stevenson's fantastic introduction at Cocoa Dev Central.
And more tutorials from Scott Stevenson... Cocoa Dev Central: Learn C for Cocoa Cocoa Dev Central: Learn Objective C