小马的单例

//
//  YLSingleton.h
//  YangLand
//
//  Created by point on 16/3/1.
//  Copyright © 2016年 tshiny. All rights reserved.
//


// .h文件
#define YLSingletonH(name) + (instancetype)shared##name;

// .m文件
#define YLSingletonM(name) \
static id _instance; \
\
+ (instancetype)allocWithZone:(struct _NSZone *)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instance = [super allocWithZone:zone]; \
}); \
return _instance; \
} \
\
+ (instancetype)shared##name \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instance = [[self alloc] init]; \
}); \
return _instance; \
} \
\
- (id)copyWithZone:(NSZone *)zone \
{ \
return _instance; \
}

   

  1. 直接创建一个header文件(只有.h文件的一个文件)

  2. 拷贝上面内容即可

  3. 使用很简单:在你使用的类中,.h中例如:YLSingletonH(你的类名)

    .m文件中:YLSingletonM(你的类名)




`这里输入代码`

你可能感兴趣的:(单例)