这是在工作中常用的一些比较实用的宏定义
- // 声明单件类的类方法
- #define DECLARE_SINGLETON_FOR_CLASS(classname) \
- + (classname*)shared##classname;
- // 获取单件实例的宏定义
- #define GET_SINGLETON_FOR_CLASS(classname) \
- [classname shared##classname]
- // 合成单件类
- #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \
- \
- static classname *shared##classname = nil; \
- \
- + (classname *)shared##classname \
- { \
- @synchronized(self) \
- { \
- if (shared##classname == nil) \
- { \
- shared##classname = [[self alloc] init]; \
- } \
- } \
- \
- return shared##classname; \
- } \
- \
- + (id)allocWithZone:(NSZone *)zone \
- { \
- @synchronized(self) \
- { \
- if (shared##classname == nil) \
- { \
- shared##classname = [super allocWithZone:zone]; \
- return shared##classname; \
- } \
- } \
- \
- return nil; \
- } \
- \
- - (id)copyWithZone:(NSZone *)zone \
- { \
- return self; \
- } \
- \
- - (id)retain \
- { \
- return self; \
- } \
- \
- - (NSUInteger)retainCount \
- { \
- return NSUIntegerMax; \
- } \
- \
- - (oneway void)release \
- { \
- } \
- \
- - (id)autorelease \
- { \
- return self; \
- }
本文介绍了一种使用宏定义实现Objective-C中单例模式的方法。通过三个宏定义简化了单例类的声明、合成及获取过程,并通过@synchronized确保线程安全。

652

被折叠的 条评论
为什么被折叠?



