#define DEFINE_SINGLETON_FOR_HEADER(className) \
\
+ (className *)shared##className;
#define DEFINE_SINGLETON_FOR_CLASS(className) \
\
+ (className *)shared##className { \
static className *shared##className = nil; \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
shared##className = [[self alloc] init]; \
}); \
return shared##className; \
}
使用时
1.在.h中#import@interface RootViewController : UIViewController
// 单例
DEFINE_SINGLETON_FOR_HEADER(RootViewController);
@end
2.在.m中
#import "RootViewController.h"
@interface RootViewController ()
@end
@implementation RootViewController
#pragma mark - public method
// 单例
DEFINE_SINGLETON_FOR_CLASS(RootViewController)
3.得到单例
RootViewController *controller = [RootViewController sharedRootViewController]