解析Cocoa单态 singleton设计模式

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

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

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

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

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

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

2012-08-22 10:10:25

单态单态设计设计模式

2023-07-31 12:27:30

单例设计模式

2009-09-02 16:23:27

C# Singleto

2011-07-26 15:29:36

Cocoa 模式

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-07-08 17:25:05

Java Single

2009-08-25 18:04:30

C#实现Singlet

2009-12-15 13:26:33

Ruby单态方法

2024-02-04 12:04:17

2015-09-06 11:07:52

C++设计模式单例模式

2021-09-16 06:44:05

组合模式设计
点赞
收藏

51CTO技术栈公众号