程序员

单例的宏定义

2017-10-25  本文已影响496人  Uncle丶shuai

用宏定义把单例忘了吧。。

#ifndef Singleton_h

#define Singleton_h

#define SingletonInterface(name)+ (instancetype)shared##name;

#define SingletonImplementation(name) \

static id _instance; \

+ (instancetype)shared##name \

{ \

static dispatch_once_t onceToken; \

dispatch_once(&onceToken, ^{ \

_instance = [[self alloc] init]; \

}); \

return _instance; \

} \

+ (instancetype)allocWithZone:(struct _NSZone *)zone \

{ \

static dispatch_once_t onceToken; \

dispatch_once(&onceToken, ^{ \

_instance = [super allocWithZone:zone]; \

}); \

return _instance; \

} \

- (id)copyWithZone:(NSZone *)zone \

{ \

return _instance; \

}

#endif/* Singleton_h */

上一篇 下一篇

猜你喜欢

热点阅读