iOSAppDev iOSAppDev - 5 months ago 13
Objective-C Question

How to create singleton class in objective C

How can I create a singleton class in Objective C?

Answer

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)
...