美文网首页
OC宏定义实现单例设计模式

OC宏定义实现单例设计模式

作者: Jackson_Chan | 来源:发表于2017-05-13 16:36 被阅读0次

单例设计模式是在开发中经常可以看到的一种设计模式,不管是在 Cocoa Touch框架还是我们自己的业务逻辑中都可以看到它的身影。

    1. 首先解答一个问题,什么是单例设计模式呢?
      它可以保证在我们的 App 里面某个类创建出来的对象有且仅有一个。
    1. 其次为什么要使用单例设计模式,直接创建对象不行么?
      1)这个要从单例设计模式的作用说起,在手持设备当中,内存的使用很多情况下都是要斤斤计较,单例设计模式可以保证在我们的 App 里面某个类创建出来的对象有且仅有一个,那么它的一个作用就是可以节省内存开销。
      2)如果我们的 App 有一份数据,整个 App 到处都有可能使用到这份数据(比如登录的用户信息),只需要使用同一份数据(保证大家访问的数据是相同的,一致的)。
      3)工具类一般都可以设计成单例设计模式。
  • 下面直接上代码
#define JCSINGLETON_H(name) +(instancetype)share##name;

#if __has_feature(objc_arc)
//条件满足 ARC
#define JCSINGLETON_M(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
#define JCSINGLETON_M(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

相关文章

  • iOS 单例

    单例模式实现不能使用继承 定义单例实现 简写 定义单例实现宏

  • OC宏定义实现单例设计模式

    单例设计模式是在开发中经常可以看到的一种设计模式,不管是在 Cocoa Touch框架还是我们自己的业务逻辑中都可...

  • 单例模式和GCD单例实现

    1、传统单例模式2、GCD单例模式3、用宏实现GCD单例模式4、用宏实现GCD单例模式,名称随类名变化而变化 单例...

  • iOS-单例模式

    swift的单例设计模式 OC的单例设计模式 新学习一种单例思想

  • 设计模式之一:单例模式

    摘要:设计模式之一:单例模式目录介绍1.单例模式介绍2.单例模式定义3.单例模式使用场景4.单例模式的实现方式 4...

  • GCD与非GCD实现单粒设计模式

    GCD实现设计模式 在某个类里面实现GCD单粒设计模式 类的.h文件 类的.m文件 宏定义封装GCD单粒设计模式(...

  • 设计模式第二篇、单例设计模式

    目录1、什么是单例设计模式2、单例设计模式的简单实现3、单例设计模式面临的两个问题及其完整实现4、单例设计模式的应...

  • 设计模式

    设计模式简介 单例设计模式 问题:单例设计模式是什么?为什么要学它?怎么用它? 1.定义:单例模式(Singlet...

  • Go语言设计模式(1)单例模式

    Go语言设计模式(1)单例模式 单例模式的定义 个人认为单例模式是23种设计模式中最简单也最好理解的一种,定义如下...

  • 设计模式——单例模式

    设计模式——单例模式 单例模式的定义 Ensure a class has only one instance, ...

网友评论

      本文标题:OC宏定义实现单例设计模式

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