美文网首页
用宏封装单例

用宏封装单例

作者: yzu | 来源:发表于2015-11-29 22:55 被阅读45次

<pre>#define SingletoH(methodName) +(instancetype)shared##methodName;//.h文件里实现

//.m文件里面实现

if __has_feature(objc_arc)//ARC情况下

define SingletoM(methodName) \

static __strong id _instace=nil;\

  • (instancetype)allocWithZone:(struct _NSZone *)zone
    {
    if (_instace==nil) {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instace=[super allocWithZone:zone];
    });
    }
    return _instace;
    }\
  • (instancetype)init
    {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instace = [super init];
    });
    return _instace;
    }\
  • (instancetype)shared##methodName
    {
    return [[self alloc] init];
    }

else//非ARC情况下

define SingletoM(methodName) \

static id *_instace=nil;\

  • (instancetype)allocWithZone:(struct _NSZone *)zone
    {
    if (_instace==nil) {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instace=[super allocWithZone:zone];
    });
    }
    return _instace;
    }\
  • (instancetype)init
    {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instace = [super init];
    });
    return _instace;
    }\
  • (instancetype)shared##methodName
    {
    return [[self alloc] init];
    }\
  • (oneway void)release
    {
    }\
  • (instancetype)retain
    {
    return self;
    }\
  • (NSUInteger)retainCount
    {
    return 1;
    }

endif

</pre>

相关文章

  • 用宏封装单例

    #define SingletoH(methodName) +(instancetype)shared##met...

  • 单例模式和GCD单例实现

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

  • IOS Tips(1):单例写法

    1.推荐单例写法 封装成宏定义 调用实例: 参考链接

  • 使用宏封装单例

    一、单例使用 使用方法 .h 2.使用方法.m 二、单例实现和定义 三、单例调用 摘录自原文:https://bl...

  • 单例

    单例 单例宏

  • iOS单例--宏定义

    如下是单例,是一个宏。这样只有工程中用到单例直接用此宏创建,大大节约时间。 如下是通过宏文件如何创建单例。在.h中...

  • iOS 单例

    Objective-C 单例宏 Swift 单例声明

  • iOS常用宏

    单例宏

  • iOS 单例

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

  • 单例模式

    单例模式是封装的一种形式,依靠单例模式调用被封装的属性和方法,因为使用单例模式的类无法生成实例(只能引用单例模式所...

网友评论

      本文标题:用宏封装单例

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