iOS开发---一句话写单例方法

转载 2015年11月21日 11:15:52

转自http://www.jianshu.com/p/3fd9f5a4d715

你想一句话写单例吗?
想就跟我一起来看看吧!(把单例定义成宏)

用法如下:

Paste_Image.png

Paste_Image.png

Paste_Image.png

Paste_Image.png
具体代码如下:
#define singletonInterface(classname)              +(instancetype)shared##classname;

#if __has_feature(objc_arc)

#define singletonImplemention(class) \
static id instanse;\
\
+ (instancetype)allocWithZone:(struct _NSZone *)zone\
{\
    static dispatch_once_t onesToken;\
    dispatch_once(&onesToken, ^{\
        instanse = [super allocWithZone:zone];\
    });\
    return instanse;\
}\
\
+ (instancetype)shared##class\
{\
    static dispatch_once_t onestoken;\
    dispatch_once(&onestoken, ^{\
        instanse = [[self alloc] init];\
    });\
    return instanse;\
}\
\
- (id)copyWithZone:(NSZone *)zone\
{\
    return instanse;\
};
#else

#define singletonImplemention(class)  \
static id instanse;\
\
+ (instancetype)allocWithZone:(struct _NSZone *)zone\
{\
    static dispatch_once_t onesToken;\
    dispatch_once(&onesToken, ^{\
    instanse = [super allocWithZone:zone];\
        });\
    return instanse;\
}\
\
+ (instancetype)shared##class\
{\
    static dispatch_once_t onestoken;\
    dispatch_once(&onestoken, ^{\
    instanse = [[self alloc] init];\
    });\
    return instanse;\
}\
\
- (id)copyWithZone:(NSZone *)zone\
{\
    return instanse;\
}\
\
- (oneway void)release {} \
- (instancetype)retain {return instance;} \
- (instancetype)autorelease {return instance;} \
- (NSUInteger)retainCount {return ULONG_MAX;}

#endif

另附代码下载地址:
http://pan.baidu.com/s/1jGItvgi

iOS开发:单例(Static)模式

iOS开发:单例(Static)模式 单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 1.单例模式的要点:...
  • Kevindongkun
  • Kevindongkun
  • 2015年09月27日 09:35
  • 637

mysql数据库中插入一句话

1.如何拿到登陆密码. 自己想办法  2.访问 : http://url/phpmyadmin/libraries/select_lang.lib.php 得到物理路径. 3.选择一个Da...
  • xing_anksh
  • xing_anksh
  • 2014年03月14日 09:44
  • 2855

iOS开发:XCTest单元测试(附上一个单例的测试代码)

测试驱动开发并不是一个很新鲜的概念了。在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确。我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编...
  • yishengzhiai005
  • yishengzhiai005
  • 2016年12月27日 14:18
  • 906

WEBSHELL姿势之SQL一句话

之前的两篇WEBSHELL姿势谈到了两种拿SHELL的方法(上传+解析漏洞、http-put/move方法),当然有时最简单的时候就是上传无限制,或者通过改filename后缀实现。这次我们要实验的就...
  • calmegm
  • calmegm
  • 2015年10月26日 22:37
  • 1672

MSSQL下拿WEBSEHLL

MSSQL的注入是一种非常复杂和有效的入侵技术,其作用当然不仅仅只是通过注入点得到管理用的密 码,再用用密码登陆网站的管理后台这种比较笨的利用方法.当MSSQL注入点为DB-ONWER权限时,而...
  • eldn__
  • eldn__
  • 2012年12月01日 23:48
  • 2728

MySQL一句话小经验

MySQL 数据库登录名称 似乎不能用中文,中文名在mysql workbench中设置权限时总会出错。...
  • Dreamfine
  • Dreamfine
  • 2016年08月02日 00:26
  • 437

iOS 开发 单例的写法

大家可以叫我mark qq:1124728522 欢迎多多指教
  • iOS_mark
  • iOS_mark
  • 2016年06月30日 17:17
  • 418

一句话的江湖情仇

有人在群里发了笑话,说编辑要求面试者用一句话写出“江湖、宗教、情仇、恩怨、道德、欲望、武打……”,面试者还真写出来了:秃驴,竟敢和贫道抢师太!...
  • SeaWave
  • SeaWave
  • 2007年03月12日 14:10
  • 1283

MySQL手工注入步骤+直接写入一句话

(1)判断注入点 通过浏览发现这个页面存在注入http://unisscan.cn/list.php?lei=246  这个是正常页面 加单引号出现异常http://unisscan.cn...
  • xing_anksh
  • xing_anksh
  • 2014年02月17日 15:39
  • 8200

【iOS开发】---- 如何将图片保存至自定义分组

【iOS开发】---- 如何将图片保存至自定义分组 http://blog.csdn.net/shenjx1225/article/details/9495289       一般...
  • jeffasd
  • jeffasd
  • 2015年10月14日 11:59
  • 392
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发---一句话写单例方法
举报原因:
原因补充:

(最多只允许输入30个字)