星空网 > 软件开发 > 操作系统

IOS中的单例设计模式

  单例设计模式IOS开发中一种很重要很常用的一种设计模式。它的设计原理是无论请求多少次,始终返回一个实例,也就是一个类只有一个实例。下面是苹果官方文档中关于单例模式的图片:

IOS中的单例设计模式images/loading.gif' data-original="http://images.cnitblog.com/blog2015/708076/201503/301132503891150.png" />

 

  如图所示,左边的图是默认的多例模式,只要发送请求去创建对象,就会得到一个新的对象;而右侧的图是单例模式,发送多个请求创建对象,但是最后返回的始终是同一个。

  因为创建单例类的实例是在确保没有其他实例的情况下才创建的,并且在程序中使用的过程中始终是同一个实例,因此单例类可以作为提供一个全局访问资源的类,比如NSUserDefaults,我们可以通过它存储数据,它里面的数据就是全局的,无论在哪个类里面操作都是一样的。此外,一个单例类还可以防止调用者复制、保留或释放实例。因此,在开发的工程中可以根据需要来创建不同的单例类。

  单例的创建分Non-ARC(非ARC)和ARC+GCD,后者现在用的比较广泛,它保证了线程的安全,满足了静态分析器的要求,还兼容了ARC,代码如下:

+(AccountManager *)sharedManager{  static AccountManager *sharedAccountManagerInstance = nil;  static dispatch_once_t predicate;  dispatch_once(&predicate, ^{    sharedAccountManagerInstance = [[self alloc] init];  });  return sharedAccountManagerInstance;}

  代码分析:

  通过这个类方法,可以得到当前类的单例对象。

  在方法中先声明了一个实例,并初始化为nil,前面的static关键字可以保证只执行一次为nil的操作。dispatch_once_t是多线程中的,保证只执行一次。dispatch_once这个函数用于检查该代码块是否已经被调用过,通过它不仅可以保证块里面初始化的代码仅被运行一次,还能保证线程的安全。

  单例的使用非常简单,可以通过上面的类方法来创建任何你想要的单例类,只需要把AccountManager修改为你想要创建类的名称,然后通过下面代码来创建实例即可:

AccountManager *manager = [AccountManager sharedManager];




原标题:IOS中的单例设计模式

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

卡拉奇港两艘大型集装箱船相撞!超过20个集装箱坠海!:https://www.ikjzd.com/articles/374
海运整箱和拼箱的成本为什么不一样:https://www.ikjzd.com/articles/3741
【很干的干货】知识产权保护指南:https://www.ikjzd.com/articles/3749
XPO为欧洲物流公司推出移动应用程序!:https://www.ikjzd.com/articles/375
长期仓储费将至,5个商品销售技巧助你快速清库存!:https://www.ikjzd.com/articles/3755
Shopee 新老卖家东南亚及台湾7大市场如何布局?:https://www.ikjzd.com/articles/3756
出境旅游预订须知:https://www.vstour.cn/a/365175.html
九寨沟景区地图(详细指南和攻略):https://www.vstour.cn/a/365176.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流