25개 이상의 토픽을 선택하실 수 없습니다.
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- // .h
- #define singleton_interface(class) + (instancetype)shared##class;
-
- // .m
- #define singleton_implementation(class) \
- static class *_instance; \
- \
- + (id)allocWithZone:(struct _NSZone *)zone \
- { \
- static dispatch_once_t onceToken; \
- dispatch_once(&onceToken, ^{ \
- _instance = [super allocWithZone:zone]; \
- }); \
- \
- return _instance; \
- } \
- \
- + (instancetype)shared##class \
- { \
- if (_instance == nil) { \
- _instance = [[class alloc] init]; \
- } \
- \
- return _instance; \
- }
|