欢迎来到天天文库
浏览记录
ID:52645928
大小:601.61 KB
页数:12页
时间:2020-03-29
《设计模式 For iOS-02-单例模式.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、设计模式ForiOS第02式单例模式整理:BeyondVincent(破船)时间:2013.05.09目录目录2第02式单例模式................31.0.简介...................................................31.0.1.什么是单例模式......................31.0.2.什么时候使用单例模式?......41.1.iOS中单例模式的实现方法............41.2.单例的使用..................
2、.....................91.3.代码下载地址.................................101.4.参考.................................................11关于设计模式ForiOS的整理.....122第02式单例模式1.0.简介1.0.1.什么是单例模式单例模式是一个类在系统中只有一个实例对象。通过全局的一个入口点对这个实例对象进行访问。在iOS开发中,单例模式是非常有用的一种设计模式。如下图,是一个简单单例模式的
3、UML类图。iOSSDK中也有许多类使用了单例模式,例如,UIApplication:当程序启动的时候,会调用UIApplicationMain方法,在该方法中,会实例化一个UIApplication对象,之后在程序中的任意地方调用sharedApplication方法都将返回一个与当前应3用程序相关的UIApplication实例(UIApplicationMain方法中创建的UIApplication单例)。1.0.2.什么时候使用单例模式?在程序中,单例模式经常用于只希望一个类只有一个实例,而不运行一
4、个类还有两个以上的实例。当然,在iOSSDK中,根据特定的需求,有些类不仅提供了单例访问的接口,还为开发者提供了实例化一个新的对象接口,例如,NSFileManager可以通过defaultManager方法返回相同的一个NSFileManager对象。如果需要新的一个NSFileManager实例对象,可以通过init方法。1.1.iOS中单例模式的实现方法iOS中单例模式的实现方式一般分为两种:Non-ARC(非ARC)和ARC+GCD。1)NON-ARC(非ARC)非ARC的实现方法如下所示:BVNo
5、nARCSingleton.h4////BVNonARCSingleton.h//SingletonPattern////CreatedbyBeyondVincenton13-5-9.//Copyright(c)2013年BeyondVincent.Allrightsreserved.//#import<Foundation/Foundation.h>@interfaceBVNonARCSingleton:NSObject@property(nonatomic,retain)NSString*t
6、empProperty;+(BVNonARCSingleton*)sharedInstance;@endBVNonARCSingleton.m////BVNonARCSingleton.m//SingletonPattern////CreatedbyBeyondVincenton13-5-9.//Copyright(c)2013年BeyondVincent.Allrightsreserved.//#import"BVNonARCSingleton.h"@implementationBVNonARCSingl
7、etonstaticBVNonARCSingleton*sharedInstance=nil;//获取一个sharedInstance实例,如果有必要的话,实例化一个+(BVNonARCSingleton*)sharedInstance{if(sharedInstance==nil){sharedInstance=[[superallocWithZone:NULL]init];}returnsharedInstance;}//当第一次使用这个单例时,会调用这个init方法。-(id)init{self=[s
8、uperinit];if(self){//通常在这里做一些相关的初始化任务5}returnself;}//这个dealloc方法永远都不会被调用--因为在程序的生命周期内容,该单例一直都存在。(所以该方法可以不用实现)-(void)dealloc{[superdealloc];}//通过返回当前的sharedInstance实例,就能防止实例化一个新的对象。+(id)allocWithZone:(NSZone*)
此文档下载收益归作者所有