iOS 开发中“宏”的高级使用——单利
来源:互联网 发布:sql编程基础 编辑:程序博客网 时间:2024/05/20 16:36
<div><span style="font-family:Comic Sans MS;font-size:24px;"><strong></strong></span></div><div><span style="font-family:Comic Sans MS;font-size:24px;"><strong>总体要领:</strong></span></div><ul><li><span style="font-family:Comic Sans MS;font-size:14px;color:#3366ff;">1. 宏里面记得传参数,如:SingletonH(<em><span style="background-color: rgb(153, 255, 255);">methodName</span></em>);</span></li><li><span style="font-family:Comic Sans MS;font-size:14px;color:#3366ff;">2. 用“##”号拼接类名,如:+ (instancetype)shared<span style="background-color: rgb(255, 255, 204);">##</span><em><span style="background-color: rgb(153, 255, 255);">methodName;</span></em></span></li><li><span style="font-family:Comic Sans MS;font-size:14px;color:#3366ff;">3. 遇到多行代码时,用“\”去结尾每一行,但是每段的最后一行除外,代码中已有警示;</span></li><li><span style="font-family:Comic Sans MS;font-size:14px;color:#3366ff;">4. ARC 判断,如代码中标示;</span></li><li><span style="font-family:Comic Sans MS;font-size:14px;color:#3366ff;">5. 直接把这段代码拿走用吧<img alt="得意" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/proud.gif" />.</span></li></ul>
<span style="font-family: 'Comic Sans MS';"><span style="font-size:14px;color:#009900;"></span></span>
<span style="font-family: 'Comic Sans MS';"><span style="font-size:14px;"></span></span><pre name="code" class="objc"><span style="font-family: 'Comic Sans MS'; font-size: 14px;"><em><strong>下面是一个</strong><span style="background-color: rgb(255, 255, 255);">Singleton.h<span></span>的内容</span></em></span>
<span style="font-family: 'Comic Sans MS'; font-size: 14px;"><span style="background-color: rgb(255, 255, 255);"><img src="http://img.blog.csdn.net/20151215222158029?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="378" height="133" alt="" /></span></span>
<span style="font-family: 'Comic Sans MS';"><span style="font-size:14px;color:#009900;">///>></span><span style="font-size:14px;color:#ff0000;"> </span><span style="color: rgb(255, 0, 0);"><span style="font-size:18px;">代码目的:帮助快速实现单例设计模式</span></span></span><span style="font-family:Comic Sans MS;"><span style="font-size:18px;"></span></span><span style="color:#009900;font-family: 'Comic Sans MS';">// .h文件的实现</span><span style="font-family:Comic Sans MS;">#define SingletonH(</span><em><span style="font-family:SimHei;background-color: rgb(153, 255, 255);">methodName</span></em><span style="font-family:Comic Sans MS;">) + (instancetype)shared<span style="background-color: rgb(255, 255, 204);">##</span></span><em><span style="font-family:SimHei;background-color: rgb(153, 255, 255);">methodName</span></em><span style="font-family:Comic Sans MS;">;</span><span style="color:#009900;font-family: 'Comic Sans MS';">// .m文件的实现</span><span style="font-family:Comic Sans MS;"></span><span style="font-family: 'Comic Sans MS'; background-color: rgb(255, 204, 51);">#if __has_feature(objc_arc)</span><span style="font-family: 'Comic Sans MS'; background-color: rgb(255, 204, 51);"> // 是ARC</span>
<span style="font-family: 'Comic Sans MS'; background-color: rgb(255, 204, 51);"></span>
<span style="font-family:Comic Sans MS;">#define SingletonM(</span><span style="background-color: rgb(51, 255, 255);"><span style="font-family:SimHei;">methodName</span></span><span style="font-family:Comic Sans MS;">) \static id _instace = nil; \+ (id)allocWithZone:(struct _NSZone *)zone \{ \if (_instace == nil) { \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instace = [super allocWithZone:zone]; \}); \} \return _instace; \} \\- (id)init \{ \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instace = [super init]; \}); \return _instace; \} \\+ (instancetype)shared<span style="background-color: rgb(255, 255, 204);">##</span></span><em><span style="font-family:SimHei;background-color: rgb(51, 255, 255);">methodName</span></em><span style="font-family:Comic Sans MS;"> \{ \return [[self alloc] init]; \} \+ (id)copyWithZone:(struct _NSZone *)zone \{ \return _instace; \} \\+ (id)mutableCopyWithZone:(struct _NSZone *)zone \{ \return _instace; \<span style="color:#ff0000;">}</span></span><span style="font-family: 'Comic Sans MS'; background-color: rgb(255, 204, 51);">#else // 不是ARC</span><span style="font-family:Comic Sans MS;">#define SingletonM(</span><span style="font-family:SimHei;"><span style="background-color: rgb(51, 255, 255);">methodName</span></span><span style="font-family:Comic Sans MS;">) \static id _instace = nil; \+ (id)allocWithZone:(struct _NSZone *)zone \{ \if (_instace == nil) { \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instace = [super allocWithZone:zone]; \}); \} \return _instace; \} \\- (id)init \{ \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instace = [super init]; \}); \return _instace; \} \\+ (instancetype)shared<span style="background-color: rgb(255, 255, 204);">##</span></span><em><span style="font-family:SimHei;background-color: rgb(51, 255, 255);">methodName</span></em><span style="font-family:Comic Sans MS;"> \{ \return [[self alloc] init]; \} \\- (oneway void)release \{ \\} \\- (id)retain \{ \return self; \} \\- (NSUInteger)retainCount \{ \return 1; \} \+ (id)copyWithZone:(struct _NSZone *)zone \{ \ return _instace; \} \ \+ (id)mutableCopyWithZone:(struct _NSZone *)zone \{ \ return _instace; \<span style="color:#ff0000;">}</span><span style="background-color: rgb(255, 204, 51);"><em>#endif</em></span></span>
0 0
- iOS 开发中“宏”的高级使用——单利
- Unity/iOS 中单利的设计模式
- ios 使用宏创建标准单利
- 单利的创建 iOS
- iOS 单利的写法
- IOS中宏的高级使用
- 单利模式的使用
- iOS 单利的简单创建
- iOS单利模式的创建
- iOS 开发 高级:使用 ...
- 单利宏的实现
- iOS开发UI高级—20Quartz2D简单使用(二)
- iOS开发UI高级—26Quartz2D使用(信纸条纹)
- iOS开发UI高级—27Quartz2D使用(截屏)
- iOS开发UI高级—41popoverController使用注意
- iOS高级开发——CollectionView的cell中按钮的点击实现
- iOS高级开发——CollectionView的cell中按钮的点击实现
- iOS 实用方法创建单利+宏定义创建单利
- 中国近代史大事年表
- project euler 87
- 正则表达式总结
- 中文分词之过滤候选词以及去重
- Java泛型
- iOS 开发中“宏”的高级使用——单利
- Android Studio系列教程四--Gradle基础
- 使用jsoup从网站抓取数据
- Java 并发工具包 java.util.concurrent 用户指南
- 接入百度地图
- main函数
- 10006---CSS id 和 class 选择器
- android中Service组件总结
- SaberRD之交流分析