iOS 單例的完整寫法

import <Foundation/Foundation.h>

@interface MFShareTool : NSObject<NSCopying,NSMutableCopying>

+(instancetype)shareTool;

@end

import "MFShareTool.h"

@implementation MFShareTool

static MFShareTool * _shareTool;
+(instancetype)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_shareTool = [super allocWithZone:zone];
});

return _shareTool;

}

+(instancetype)shareTool{
return [[self alloc]init];
}

-(id)copyWithZone:(NSZone *)zone{
return _shareTool;
}
-(id)mutableCopyWithZone:(NSZone *)zone{
return _shareTool;
}
// 判斷環境是否為ARC

if __has_feature(objc_arc)

else

-(oneway void)release {

}
-(instancetype)retain{
return _shareTool;
}
-(NSUInteger)retainCount{
return MAXFLOAT;
}

endif

@end
!!! 注意點
單例不能使用繼承

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容