iOS开发浅谈单例模式

iOS开发浅谈单例模式

ID:44416437

大小:109.50 KB

页数:3页

时间:2019-10-21

iOS开发浅谈单例模式_第1页
iOS开发浅谈单例模式_第2页
iOS开发浅谈单例模式_第3页
资源描述:

《iOS开发浅谈单例模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、iOS开发浅谈单例模式先说说单例模式的概念,从百科里查到单例模式是一种常用的软件设计模式。在它的核心结构屮只包含一个被称为单例的特殊类。通过单例模式可以保证系统屮一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。那么要编写单例模式,首先要禁止外部创建对象,然后只允许H身内部创建一个唯一的对象,那么外部有哪些可以创建对象的方式呢?在ARC模式下(MRC在此不作讨论):1、使用类方法alloc2、使用类方法allocWithZo

2、ne:3、使用对彖方法copy4、使用类方法new为了禁止这些方法,应该垂写这些方法或想办法让这些方法不能彼调用。1>类方法alloc由于此方法会默认调用allocWithZone:,所以只需要处理allocWithZone:就可以了。2、类方法allocWithZone:重写此方法,讣其直接调用当前单例方法。3>对彖方法copy此方法要求自定义类必须耍遵循NSCopying协议,本身就不町以直接调用,不用做处理就好。4、类方法new此方法默认调用alloc和init,上面已经处理了alloc,这里不需要额外处理。写到此处

3、,单例模式己经可以实现,但是为了让外部调用init的时候保持一致性,也可以将init方法重写一下(建议强迫症的人使用,因为其实不重写也不影响)。好,看个例子:^import^MyApplication.h〃@implomentalionMyApplication(instancetype)init{return[[sclfclass]sharedApplication];}-(instancetype)initPrivate{if(self=[superinit]){}roturnself;}+(instancetype)

4、allocWithZone:(struct_NSZone*)zone{return[seifsharcdApplication];}+(MyApplication*)sharedApplication{staticMyApplication*application;/********方式一:使用GCDstaticdispatchoncetonceTokcn;dispatchonce(&onceToken,"{if(!application){application二[[superal1ocWithZone:NULL]ini

5、tPrivate];});//方式二:@synchroni7ed(sel『){if(!application){application二[[supcrallocWithZonc:NULL]initPrivatc];returnapplication;©end

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。