系统单例:
UIApplication类sharedApplication方法
NSNotificationCenter(消息中心)
NSFileManager(文件管理)
NSUserDefaults(持久化存储数据)
NSURLCache(请求缓存)
NSHTTPCookieStorage(应用程序cookies池)
UIAccelerometer类和sharedAccelerometer方法
NSBundle类和mainBundle方法
.h
#import <Foundation/Foundation.h>
@interface Single : NSObject
+(instancetype)shareSingle;
.m
#import "Single.h"
static Single * _instance;
@implementation Single
+(instancetype)shareSingle{
static dispatch_once_t onetoken;
dispatch_once(&onetoken, ^{
if(!_instance){
_instance = [[self alloc]init];
}
});
return _instance;
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t onetoken;
dispatch_once(&onetoken, ^{
if (!_instance){
_instance = [super allocWithZone:zone];
}
});
return _instance;
}
- (id)copyWithZone:(NSZone *)zone{
return _instance;
}
- (id)mutableCopyWithZone:(NSZone *)zone{
return _instance;
}
宏定义
MRC
-(oneway void)release\
{\
}\
\
-(instancetype)retain\
{\
return _instance;\
}\
\
-(NSUInteger)retainCount\
{\
return MAXFLOAT;\
}
// .m文件
#define WMSingletonM(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; \
}