解析Cocoa单态 singleton设计模式

移动开发 iOS
本文介绍的是解析Cocoa单态 singleton设计模式,主要是以代码来实现实例操作,我们先来看内容。

解析Cocoa单态 singleton设计模式是本文要介绍的内容,不多说,先来看内容,如果你准备写一个类,希望保证只有一个实例存在,同时可以得到这个特定实例提供服务的入口,那么可以使用单态设计模式单态模式在Java、C++中很常用,在Cocoa里,也可以实现。

由于自己设计单态模式存在一定风险,主要是考虑到可能在多线程情况下会出现的问题,因此苹果官方建议使用以下方式来实现单态模式

  1. static MyGizmoClass *sharedGizmoManager = nil;  
  2.    
  3.  (MyGizmoClass*)sharedManager  
  4. {  
  5.     @synchronized(self) {  
  6.         if (sharedGizmoManager == nil) {  
  7.             [[self alloc] init]; // assignment not done here  
  8.         }  
  9.     }  
  10.     return sharedGizmoManager;  
  11. }  
  12.    
  13.  (id)allocWithZone:(NSZone *)zone  
  14. {  
  15.     @synchronized(self) {  
  16.         if (sharedGizmoManager == nil) {  
  17.             sharedGizmoManager = [super allocWithZone:zone];  
  18.             return sharedGizmoManager;  // assignment and return on first allocation  
  19.         }  
  20.     }  
  21.     return nil; //on subsequent allocation attempts return nil  
  22. }  
  23.   (id)copyWithZone:(NSZone *)zone  
  24. {  
  25.     return self;  
  26. }  
  27.    
  28.  (id)retain  
  29. {  
  30.     return self;  
  31. }  
  32.    
  33.  (unsigned)retainCount  
  34. {  
  35.     return UINT_MAX;  //denotes an object that cannot be released  
  36. }  
  37.    
  38.  (void)release  
  39. {  
  40.     //do nothing  
  41. }  
  42.    
  43. (id)autorelease  
  44. {  
  45.     return self; 

小结:解析Cocoa单态 singleton设计模式的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: Cocoa China
相关推荐

2012-08-22 10:10:25

单态单态设计设计模式

2023-07-31 12:27:30

单例设计模式

2011-07-26 15:29:36

Cocoa 模式

2009-09-02 16:23:27

C# Singleto

2009-07-09 17:30:59

Singleton模式C++ SingletJava Single

2021-02-01 10:01:58

设计模式 Java单例模式

2011-07-07 16:14:37

Cocoa MVC 模型

2021-03-02 08:50:31

设计单例模式

2013-11-26 16:20:26

Android设计模式

2016-03-28 10:23:11

Android设计单例

2009-08-31 16:12:02

C#使用Singlet

2022-06-07 08:55:04

Golang单例模式语言

2022-02-06 22:30:36

前端设计模式

2009-08-31 15:48:02

C# Singleto

2009-08-25 18:04:30

C#实现Singlet

2009-07-08 17:25:05

Java Single

2024-02-04 12:04:17

2009-12-15 13:26:33

Ruby单态方法

2021-09-16 06:44:05

组合模式设计

2015-09-06 11:07:52

C++设计模式单例模式
点赞
收藏

51CTO技术栈公众号