Objective C ARC下的单例模版宏 ARC Singleton template

29 篇文章 0 订阅
2 篇文章 0 订阅

之前写过一篇关于非ARC的单例模版宏的文章地址

但现在ARC的使用越来越广泛,原来的模版宏可能已经不是很适应,那介绍一下ARC版的模版宏的写法和用法

写法

ARCSingletonTemplate.h

#define SYNTHESIZE_SINGLETON_FOR_HEADER(className) \

\

+ (className *)shared##className;


#define SYNTHESIZE_SINGLETON_FOR_CLASS(className) \

\

+ (className *)shared##className { \

    static className *shared##className = nil; \

    static dispatch_once_t onceToken; \

    dispatch_once(&onceToken, ^{ \

        shared##className = [[self alloc] init]; \

    }); \

    return shared##className; \

}


基本是使用了 GCD中的dispatch_once接收一个在应用生命周期只会被调用一次的代码块,而且它还是线程安全的

用法

AppPreference.h

#import <Foundation/Foundation.h>

#import "ARCSingletonTemplate.h"

@interface AppPreference :NSObject

//使用宏模版生成单例所需要的code

SYNTHESIZE_SINGLETON_FOR_HEADER(AppPreference)

@end


AppPreference.m

#import "AppPreference.h"

@implementation AppPreference

//使用宏模版生成单例所需要的code

SYNTHESIZE_SINGLETON_FOR_CLASS(AppPreference)

//例子

- (void)sample{

   AppPreference* appPreference = [AppPreferencesharedAppPreference];

}

@end


使用 shareClassName 就可以获取实例。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值