Du kan inte välja fler än 25 ämnen
Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
|
- // .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; \
- }
|