iOS单例的宏定义

来源:互联网 发布:同花顺手机行情软件 编辑:程序博客网 时间:2024/05/17 02:52
  1. // 声明单件类的类方法  
  2. #define DECLARE_SINGLETON_FOR_CLASS(classname) \  
  3. + (classname*)shared##classname;  
  4.   
  5. // 获取单件实例的宏定义  
  6. #define GET_SINGLETON_FOR_CLASS(classname) \  
  7. [classname shared##classname]  
  8.   
  9. // 合成单件类  
  10. #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \  
  11.  \  
  12. static classname *shared##classname = nil; \  
  13.  \  
  14. + (classname *)shared##classname \  
  15. { \  
  16.     @synchronized(self) \  
  17.     { \  
  18.         if (shared##classname == nil) \  
  19.         { \  
  20.             shared##classname = [[self alloc] init]; \  
  21.         } \  
  22.     } \  
  23.      \  
  24.     return shared##classname; \  
  25. } \  
  26.  \  
  27. + (id)allocWithZone:(NSZone *)zone \  
  28. { \  
  29.     @synchronized(self) \  
  30.     { \  
  31.         if (shared##classname == nil) \  
  32.         { \  
  33.             shared##classname = [super allocWithZone:zone]; \  
  34.             return shared##classname; \  
  35.         } \  
  36.     } \  
  37.      \  
  38.     return nil; \  
  39. } \  
  40.  \  
  41. - (id)copyWithZone:(NSZone *)zone \  
  42. { \  
  43.     return self; \  
  44. } \  
  45.  \  
  46. - (id)retain \  
  47. { \  
  48.     return self; \  
  49. } \  
  50.  \  
  51. - (NSUInteger)retainCount \  
  52. { \  
  53.     return NSUIntegerMax; \  
  54. } \  
  55.  \  
  56. - (oneway void)release \  
  57. { \  
  58. } \  
  59.  \  
  60. - (id)autorelease \  
  61. { \  
  62.     return self; \  
  63. }  
0 0
原创粉丝点击