Globals and Singletons

My preferred approach to creation and maintaing global variables/ constants is by singletons and singleton instance[s]. Not only is an elegant method that adds compliance to a very important Cocoa design pattern, but also provides you a lot of flexibility.
Moreover — using singletons — your code won’t get cluttered and managing globals will be much easier.
For example, consider a class [ala_crossref]Globals[/ala_crossref], that I created to maintain global variables in one of my past Cocoa Touch projects:

@interface Globals : NSObject {
	NSString	*attributeKey;
}

+ (Globals *)sharedInstance;

- (NSString *)getAttributeKey;
- (void)setAttributeKey:(NSString *)attrK;

And implementation:

#import "Globals.h"

@implementation Globals

static Globals *_sharedInstance;

- (id)init {
	if (self = [super init]) {
		attributeKey	= @"";
	}
	return self;
}

+ (Globals *)sharedInstance {
	if (!_sharedInstance) {
		_sharedInstance = [[Globals alloc] init];
	}
	return _sharedInstance;
}

- (NSString *)getAttributeKey {
	return attributeKey;
}
- (void)setAttributeKey:(NSString *)attrK {
	attributeKey = attrK;
}

Leave a Reply

Your email address will not be published. Required fields are marked *