`
yidongkaifa
  • 浏览: 4062634 次
文章分类
社区版块
存档分类
最新评论

iOS单例模式的实现

 
阅读更多

单例是指静态分配的实例,而 iphone sdk 中全是这种实例,例如

[UIApplication sharedApplication] 返回一个指向代表应用程序的单例对象的指针。[UIDevice currentDevice] 获取一个代表所有使用硬件平台的对象。

将类方法与单例相结合,便可以在程序的任何地方访问静态实例,而无需使用指向对象的指针或保存它的实例变量。创建类的唯一实例(普通单例)的函数示例:

//在很多时候,我们使用某个类的唯一实例。最常见的就是一个程序的主类,以下是以名为 RootViewController 创建的一个单例函数:

staticRootViewController *sharedRootController = nil;

+(RootViewController *) sharedController{

@synchronized(self)
{
if (sharedRootController == nil)
{
sharedRootController = [[[self alloc] init] autorelease];
}
}
return sharedRootController;
}

+(id)allocWithZone:(NSZone *)zone
{
@synchronized(self)
{
if (sharedRootController == nil)
{
sharedRootController = [super allocWithZone:zone];
return sharedRootController;
}
}
return nil;
}

代码说明:

1、synchronized 这个主要是考虑多线程的程序,这个指令可以将{ } 内的代码限制在一个线程执行,如果某个线程没有执行完,其他的线程如果需要执行就得等着。

2、网上搜索的代码,好像有一个没有加入 autorelease,我觉得应该需要加。因为如果调用的函数没有release就麻烦了(我觉得,iOS 上的程序,对于创建用于函数返回值的,都应该考虑 autorelease)。

3、allocWithZone 这个是重载的,因为这个是从制定的内存区域读取信息创建实例,所以如果需要的单例已经有了,就需要禁止修改当前单例,所以返回 nil。

分享到:
评论

相关推荐

    ios 单例模式

    ios单例模式的详细解释、两种方式实现单例模式,重写需要实现的方法

    Objective C 单例模式设计源码

    因为Objective C传承了Smalltalk语言,所以在Objective C中实现单例模式和C++和C#以及Java都不太一样。因为要保证类型对象的单一性,所以就要考虑Objective C在实例化对象时候的各种方式。因为在Objective C中创建的...

    ios demo,dispatch_once,单例模式的应用

    ios demo,dispatch_once,单例模式的应用,ios demo,dispatch_once,单例模式的应用

    在iOS中实现设计模式代码实现

    1. **单例模式(Singleton Pattern)**: 单例模式确保一个类只有一个实例,并提供一个全局访问点。在iOS中,可以将单例类实现为一个共享的管理者类,例如,用于网络请求或本地数据存储的管理者。 ```swift ...

    单例模式的简单使用

    在iOS的面试中经常会被问到单例模式,一些同学只是简单的去记或是背诵“只能创建一个对象在程序中”,若是被问到举个例子,多线程的处理时就不知道了,我简单的写了个例子,主要类有注释,分享

    详解IOS 单例的两种方式

    主要介绍了详解IOS 单例的两种方式的相关资料,希望通过本文大家能够理解掌握IOS 的两种单例的使用方法,需要的朋友可以参考下

    深入理解Swift中单例模式的替换及Swift 3.0单例模式的实现

    主要给大家介绍了关于Swift中单例模式替换的相关资料,然后又跟大家分享了关于Swift3.0 单例模式实现的几种方法-Dispatch_Once的内容,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

    iOS App开发中使用设计模式中的单例模式的实例解析

    二、单例模式的两种写法 1,常用写法 #import LGManagerCenter.h static LGManagerCenter *managerCenter; @implementation LGManagerCenter +(LGManagerCenter *)sharedManager{ if(!managerC

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码

    C中实现单例模式7.4 子类化Singleton7.5 线程安全7.6 在Cocoa Touch框架中使用单例模式7.6.1 使用UIApplication类7.6.2 使用UIAccelerometer类7.6.3 使用NSFileManager类7.7 总结第三部分 接口适配第8章 适配器8.1 ...

    swift 单例的实现方法及实例

    主要介绍了swift 单例的实现方法及实例的相关资料,需要的朋友可以参考下

    iOS-Design-Patterns:iOS设计模式集合

    单例模式人人用过,严格的单例模式很少有人用过 严格的单例模式指的是无法通过常规的 alloc init 方法来生成对象,派生出来的子类也不能产生出对象,而只能通过单例的方法获取到对象 FlyweightPattern 享元设计模式的...

    iOS 断点续传

    项目采用封装好的方式实现断点续传功能,通过单例模式快速获取对象

    WebSockets开发包starscream.zip

    starscream 是使用 Swift 实现了 iOS 和 OS X 的 Websockets(RFC 6455)。 同时还有个 Objective-C 版本的:jetfire 特性: 符合所有基础的 Autobahn 测试套件. 非阻塞。所有都在后台运行 简单的委托模式设计...

    IOS界面跳转传值

    详细的IOS界面跳转及传值,包含toolbar实现多个view之间的跳转以及界面内按钮实现跳转,用到单例模式: 在第一个界面登陆,在第二个界面显示名字,并且根据不同的名字显示不同的图片 (最好不要加toolbar) 博客参考...

    《iOS6开发指南》精彩书摘

    iOS开发中常用的4种模式,分别为单例模式、委托模式、观察者模式、MVC模式。按照问题提出、实现原理、应用案例的结构介绍了每种模式的适用情况、实现的原理并同时用具体案例来说明每个案例的实现方式。 第4章...

    iOS应用开发中使用设计模式中的观察者模式的实例

    在软件开发中,无论是那种高级语言中总会伴随着一些最为常用的设计模式,即便就如iOS开发中与我们打交道最多的无非就是单例模式、观察者模式和工厂模式了,当然了其他的设置模式也同样存在在编程的很多地方。...

    DemoCode:博客演示代码

    DemoCodeBlog Demo CodeiOS动画指南 - 2.Layer Animations的基本使用iOS动画指南 - 3.Layer Animations的进阶使用iOS动画指南 - 4....单例模式、备忘录模式和策略模式设计模式(Swift) - 3.观察者模式、建造者模式

    Swift-X-Design-Patterns:Swift在Swift X中实现的设计模式。`let X = 5.x`

    内容建造者模式观察者模式代表图案状态模式适配器图案纪念图案复合图案迭代器模式单例模式桥型命令模式责任链模式中介者模式跳线模式口译模式访客模式 参考大话设计模式ochococo /快速设计模式 执照

    Swift2.0-TCP-UDP-Helper:基于 AsyncSocket 的 TCPUDP 助手,可被 Swift 语言调用。 和单身

    基于AsyncSocket做的Swift2.0封装,通过SmartConfigDemoIos-Bridging-Header桥接到AsyncSocket,Swift编写的controller用单例模式实现AsyncSocket的异步同步。 项目需要用swift编写一个iOS的LED控制程序,连接的微型...

Global site tag (gtag.js) - Google Analytics