美文网首页iOS开发牛叉的demo
iOS开发中单例模式宏,在MRC和ARC通用

iOS开发中单例模式宏,在MRC和ARC通用

作者: 随心吧 | 来源:发表于2017-02-20 16:34 被阅读65次
『导言』

亲们!有木有遇到这种情况:在iOS开发中多处用到单例模式,比如:多处处理网络请求况下,这时候难道不停地写单例模式?其实呀,有更好办法,建立一个宏文件,只要拖入工程,任何情况下套用都行!

一 、单例宏文件代码如下:单例宏Sing.h下载
#define SingleH(name)   +(instancetype )share##name;

//条件满足ARC
# if __has_feature(objc_arc)
//否则执行MAC  ##表示拼接   条件编译if不能放入宏define,所以先条件编译大与宏范围。

#define SingleM(name)   static  id  _instance; \
+(instancetype)allocWithZone:(struct _NSZone *)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{   \
_instance = [super allocWithZone: zone]; \
});  \
return _instance; \
} \
\
+(instancetype )share##name   \
{ \
return [[self alloc] init ]; \
} \
\
-(id)copyWithZone:(NSZone *)zone \
{ \
return _instance; \
} \
\
-(id)mutableCopyWithZone:(NSZone *)zone \
{ \
return _instance; \
} \

# else
//条件不满足:MRC
#pragma mark - MRC

#define SingleM(name)   static  id  _instance; \
+(instancetype)allocWithZone:(struct _NSZone *)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{   \
_instance = [super allocWithZone: zone]; \
});  \
return _instance; \
} \
\
+(instancetype )share##name \
{ \
return [[self alloc] init ]; \
} \
\
-(id)copyWithZone:(NSZone *)zone \
{ \
return _instance; \
} \
\
-(id)mutableCopyWithZone:(NSZone *)zone \
{ \
return _instance; \
} \
-(oneway void)release \
{ \
  \
} \
-(instancetype)retain \
{ \
 \
return _instance;  \
} \
-(NSUInteger)retainCount \
{ \
    return MAXFLOAT; \
}//不能加\   如果加表示endif 为MRC其中的一部风

# endif
二、如何套用?demo下载

1.0 将宏下载下来,拖入xcode工程中.
2.0 比如:建立一个继承NSObject的ZWJTool.h ZWJTool.m文件
3.0 加入头文件 #import "Single.h"
4.0 在.h文件引用SingleH(ZWJTool)
5.0 在.m文件引用SingleM(ZWJTool)
6.0 在需要地方调用: ZWJTool *tool = [ZWJTool shareZWJTool];

相关文章

  • iOS开发中单例模式宏,在MRC和ARC通用

    『导言』 亲们!有木有遇到这种情况:在iOS开发中多处用到单例模式,比如:多处处理网络请求况下,这时候难道不停地写...

  • 单例模式

    这篇文章的主要内容包括:1、在ARC中完成一个单例模式的三步2、在MRC中完成一个单例模式的三步3、单例模式通用宏...

  • iOS之单例设计模式

    iOS开发多线程篇—单例模式(ARC\MRC) 简单说明: 设计模式:多年软件开发,总结出来的一套经验、方法和工具...

  • iOS开发中ARC和MRC都可以用的单例模式?

    ** 单例模式- 通用版本(ARC&MRC)** (1)有意思的对话 0...

  • 单例模式(单例宏)

    单例模式 单例模式(arc) 类的实现 调用单例 单例模式(mrc) 除了上边的方法我们在mrc的时候还需要增加一...

  • The Singleton Pattern 单例模式

    单例模式的作用 单例模式的使用场合 单例模式在ARC\MRC环境下的写法有所不同,需要编写2套不同的代码 可以用宏...

  • iOS浅谈单例

    ARC MRC 抽取单例 单例模式是不能使用继承的 具体使用

  • iOS开发-单例模式(ARC与MRC)

    单例一般作为工具类单例命名:一般情况下如果一个类是单例,那么就会提供一个类方法用于快速创建单例对象而且这个类方法的...

  • iOS 单例模式

    概念相关 (1)单例模式 (2)使用场合 2 ARC实现单例 (1)步骤 (2)相关代码 3 MRC实现单例 (1...

  • 单例模式 实现(MRC和ARC)和宏抽取

    MRC环境-单例实现 .h文件实现 .m文件实现 实现一个类方法重写五个系统方法 ARC环境下- 单例实现 当需要...

网友评论

    本文标题:iOS开发中单例模式宏,在MRC和ARC通用

    本文链接:https://www.haomeiwen.com/subject/awdewttx.html