歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Objective-C中單例類的聲明

Objective-C中單例類的聲明

日期:2017/3/1 10:12:31   编辑:Linux編程

在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. //3、內存管理方法,以保證在內存中存在該對象時,內存計數器中,該對象的retainCount值始終為1
  15. + (id)allocWithZone:(NSZone *)zone
  16. {
  17. return [[self sharedManager] retain];
  18. }
  19. - (id)copyWithZone:(NSZone *)zone
  20. {
  21. return self;
  22. }
  23. - (id)retain
  24. {
  25. return self;
  26. }
  27. - (NSUInteger)retainCount
  28. {
  29. return NSUIntegerMax; //denotes an object that cannot be released
  30. }
  31. - (id)autorelease
  32. {
  33. return self;
  34. }
  35. @end
Copyright © Linux教程網 All Rights Reserved