关于iOS单例,iOS单例详解请看这篇文章
http://www.jianshu.com/p/ba30a063fce4。
然而我们为了方便使用,可以使用宏单例:
只要将以下代码定义在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; \
}
使用方法:
Login.h文件
#import <Foundation/Foundation.h>
@interface Login :NSObject
singleton_interface(Login);
@end
Manager.m文件
#import "Login.h"
@interface Login ()
@end
@implementation Login
singleton_implementation(Login)
@end
viewController调用
Login * login = [Login sharedManager];