単例の完全な書き方
984 ワード
#import
@interface SUNTool : NSObject
+(instancetype)shareTool;
@end
#import "SUNTool.h"
@implementation SUNTool
//0.
static SUNTool *_instance;
//1.alloc-->allocWithZone
+(instancetype)allocWithZone:(struct _NSZone *)zone
{
//
// @synchronized(self) {
// if (_instance == nil) {
// _instance = [super allocWithZone:zone];
// }
// }
//
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [super allocWithZone:zone];
});
return _instance;
}
//2.
+(instancetype)shareTool
{
return [[self alloc]init];
}
//3.
-(id)copyWithZone:(NSZone *)zone
{
return _instance;
}
-(id)mutableCopyWithZone:(NSZone *)zone
{
return _instance;
}