李洪强iOS开发之宏定义方法来初始化一个单例对象
2016-07-15 14:31
405 查看
[b].m[/b]
为了方便实用,只要将以下代码定义在header文件或者.pch文件即可;
// .h#define singleton_interface(class) + (instancetype)shared##class;
// .m
#define singleton_implementation(class) \
static class *_instance; \
\
+ (id)allocWithZone:(struct _NSZone *)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instance = [super allocWithZone:zone]; \
}); \
\
return _instance; \
} \
\
+ (instancetype)shared##class \
{ \
if (_instance == nil) { \
_instance = [[class alloc] init]; \
} \
\
return _instance; \
}
使用方法:
Manager.h文件
#import <Foundation/Foundation.h>
@interface Manager :NSObject
singleton_interface(Manager);
@end
Manager.m文件
#import "Manager.h"
@interface Manager ()
@end
@implementation Manager
singleton_implementation(Manager)
@end
viewController调用
Manager *manager = [Manager sharedManager];
相关文章推荐
- iOS Storyboard 模块划分
- OC - iOS7、8及其以上计步器的简单使用
- 阿里weex研究iOS(三)真机实时调试
- iOS 【iOS Runtime浅析(3):Method Swizzling】
- iOS 自动追加版本时间版本号脚本
- 关于使用SDWebImage内存爆涨的问题
- XZ_iOS之时间戳和时间字符串的一个转换
- iOS 版本号大小比较
- iOS开发支付集成之支付宝支付
- iOS开发支付集成之银联支付
- CATransform3DIdentity
- iOS 【iOS Runtime浅析(2):消息转发】
- ios基础之属性set get方法同时重写报错的问题
- iOS Failed to find matching arch for 64-bit Mach-O input file
- iOS 类似小红书闪动标签点动画
- iOS 图片放大缩小动画
- iOS开发中WiFi相关功能总结
- iOS内存管理retain,assign,copy,strong,weak
- iOS- define宏定义和const常变量区别
- iOS 广告轮播图