Objective-C中单例类的声明


在Objective-C中,使用单例模式,定义一个单例类的过程如下:

1、定义一个static的类对象,出事值为nil

2、在工厂方法中(一般都是以“sharedInstance”或者"sharedManager"命名),仅仅在第一步中声明的static类对象为空的情况下,使用allocWithZone:方法创建一个新对象

3、重写allocWithZone:方法

4、添加内存管理方法,以保证只会出现一个该类的实例。

下面是苹果官方的demo示例:

  1. #import "MySingletonClass.h"     
  2. @implementation MySingletonClass    
  3. //1、声明一个static类型的类对象     
  4. static MySingletonClass *sharedGizmoManager = nil;    
  5. //2、创建工厂方法     
  6. + (MySingletonClass*)sharedManager    
  7. {     
  8.     @synchronized(self){      
  9.         if (sharedGizmoManager == nil)   
  10.         <SPAN style="WHITE-SPACE: pre"> </SPAN>sharedGizmoManager = [[super allocWithZone:NULL] init];    
  11.     }    
  12.     return sharedGizmoManager;  
  13. }    
  14.   
  15. //3、内存管理方法,以保证在内存中存在该对象时,内存计数器中,该对象的retainCount值始终为1     
  16. + (id)allocWithZone:(NSZone *)zone    
  17. {    
  18.     return [[self sharedManager] retain];    
  19. }    
  20.   
  21. - (id)copyWithZone:(NSZone *)zone    
  22. {    
  23.     return self;    
  24. }    
  25.   
  26. - (id)retain    
  27. {    
  28.     return self;    
  29. }    
  30.   
  31. - (NSUInteger)retainCount    
  32. {    
  33.     return NSUIntegerMax;  //denotes an object that cannot be released     
  34. }    
  35.   
  36. - (id)autorelease    
  37. {    
  38.     return self;    
  39. }    
  40.   
  41. @end    

相关内容