歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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    
Copyright © Linux教程網 All Rights Reserved