iOS开发:单例模式

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

这是我的开园第一篇,至于为什么要写单例模式,是因为我在学习ios之初对单例模式的概念比较模糊,特意在这做一次整理,希望可以和大家分享。

一,ios单例模式的概念(什么是单例模式)

单例模式最主要的一点就是只有一个实例。实例是什么?实例就是对象一个叫法,对象实例化,用前辈的一个比喻就是说:制作月饼的磨具就是类,月饼就是对象,制作月饼的过程叫做对象实例化。

这个类只拥有一个实例,我们称之为单例类。这个单例类需要向整个工程或者说里面的各个类提供它的实例,通俗一点说,小明(实例对象)在一年级四班,他可以被叫到语文办公室,也可以被数学办公室点名。

优点么,实例只有一个,你说呢,,,

二,单例模式的应用

下面是我的一个Demo,非常通俗(单例模式一般情况下如何创建使用)

DAO.h

1#import<Foundation/Foundation.h>2@interfaceDAO : NSObject3 + (DAO *)sharedDAO;//类方法

4 -(void)PRintYourName;//实例方法,就是过会实例要干的事情5@end

DAO.m

1#import"DAO.h"2staticDAO *instance=nil;//静态实例化一个对象 ,为什么是static,因为类方法也叫做静态方法3@implementationDAO45+ (DAO *)sharedDAO//判断实例是否为空,初始化它,作用就是获得DAO的单例对象6{7if(instance==nil)8{9instance=[[DAO alloc] init];10}11returninstance;12}

13

14 -(void)printYourName//实例方法,在BL.m中将会调用

15 {

16 NSLog(@"张三");

17 }

@end

BL.h

1#import<Foundation/Foundation.h>2#import"DAO.h"34@interfaceBL : NSObject56@property (nonatomic,strong) DAO *dao;//创建一个叫dao的对象78@end

BL.m

1#import"BL.h"2345@implementationBL6- (id)init//初始化7{8self=[super init];9if(self)10{11self.dao=[DAO sharedDAO];//获得了单例对象1213[self.dao printYourName];//用这个单例对象来调用DAO.m中的实例方法1415}16returnself;17}1819@end

这是较为简单一个demo,手打了一部分,可能会有瑕疵望指正。

对于刚刚学习ios的同学可能会帮助。在MVC开发模式中经常要运用到,当然这个demo比较初级,能够节省内存空间和时间,但存在多线程状态下并发问题,当然网上有很多改进版,大家可以搜索研习。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航