How can I create a singleton class in Objective C?
Okay appDev, you will probably find quite a few different techniques to do this on the web. However, for iOS app development, I think the most convenient way is to do the following:
Write your method(s) for getting the singleton object. (Recommendation: use dispatch_once
thread and GCD for this).
Wrap your method(s) in a macro and add it to your $Project$-Prefix.pch
file.
Call the one line macro whenever you need singleton object for a class.
Example:
CommonMacros.h:
#define SINGLETON_FOR_CLASS(classname)
+ (id) shared##classname {
static dispatch_once_t pred = 0;
static id _sharedObject = nil;
dispatch_once(&pred, ^{
_sharedObject = [[self alloc] init];
});
return _sharedObject;
}
YourProject-Prefix.pch:
...
#import "CommonMacros.h"
...
YourSingletonClass.m:
...
SINGLETON_FOR_CLASS(YourSingletonClass)
...