Objective-C的单例模式(singleton)

转载 2012年03月28日 12:47:38

如果你准备写一个类,希望保证只有一个实例存在,同时可以得到这个特定实例提供服务的入口,那么可以使用单态设计模式。

单态模式在Java、C++中很常用,在Cocoa里,也可以实现。

但是,

Objective-C的单例模式绝对和你所想象不一样,他的写法和你所见过的所有语言的写法都不一样。

官方建议

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

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;
}

objective-c 单例模式Singleton的实现

static ClubSession *_singletonInstance = nil; + (ClubSession *)current { @synchronized(self) ...

Objective-C 中singleton(单例模式)的实现

Objective-C 中singleton(单例模式)的实现 OC中的单例很有意思,因为没办法像JAVA或C++中把构造函数设为private的来防止其它人直接 new 一个新对象,所以像...

Objective-c 单例设计模式(Singleton)

一、什么是单例模式:(Singleton)      单例模式的意图是是的类的对象成为系统中唯一的实例,提供一个访问点,供客户类共享资源。 二、什么情况下使用单例?      1、类只能...

Objective-C在ARC下结合GCD的单例模式和宏模版

单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法: [cpp] view plaincopy static MyGizmoClass *...

Objective-C在ARC下结合GCD的单例模式和宏模版

单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法:static MyGizmoClass *sharedGizmoManager = nil; + (MyG...

Objective-C在ARC下结合GCD的单例模式和宏模版

单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法: [cpp] view plaincopy static MyGizmoClass *...

Objective-C中的单例模式

#import "ApplicationContext.h" static ApplicationContext *appcationContext =nil; @implementation A...
  • shaoBoG
  • shaoBoG
  • 2014年07月02日 15:57
  • 344

Objective-C在ARC下结合GCD的单例模式和宏模版

单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法: [cpp] view plaincopy static ...

Objective-c单例模式的正确写法

Objective-c单例模式的正确写法 单例模式在iOS开发中可能算是最常用的模式之一了,但是由于oc本身的语言特性,想要写一个正确的单例模式相对来说比较麻烦,这里我就抛砖引玉来聊...
  • Vic__li
  • Vic__li
  • 2015年10月31日 16:17
  • 233

Objective-C的单例模式如何新建和测试?

所谓单例模式是一种最简单的设计模式之一,就是程序中一个类只对应着一个实例,在很多编程语言中都有这种模式,比如objective-c编程语言、Java语言。对于objective-c来说,其单例模式是怎...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Objective-C的单例模式(singleton)
举报原因:
原因补充:

(最多只允许输入30个字)