1. 單例設計模式(Singleton)
* 保證某個類創建出來的對象永遠只有一個
2. 作用
* 節省內存開銷。
* 如果有些數據,整個程序中都用得上,只需要使用同一份資源(保證大家訪問的數據是相同一致的)
* 一般來說工具類設計為單例模式合適
3. 實現
* MRC
* ARC
SoundTool.h
1 #import <Foundation/Foundation.h>2 3 @interface SoundTool : NSObject <NSCopying>4 5 + (instancetype)shareSoundTool;6 7 @end
SoundTool.m
#import "SoundTool.h"@implementation SoundToolstatic id _instance = nil;+ (instancetype)allocWithZone:(struct _NSZone *)zone{ if (_instance == nil) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super allocWithZone:zone]; }); } return _instance;}+ (instancetype)shareSoundTool{ return [[self alloc] init];}- (instancetype)init{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super init]; }); return _instance;}+ (instancetype)copyWithZone:(struct _NSZone *)zone{ return _instance;}+ (instancetype)mutableCopyWithZone:(struct _NSZone *)zone{ return _instance;}//以下三個為非ARC使用- (oneway void)release{}- (instancetype)retain{ return _instance;}- (NSUInteger)retainCount{ return 1;}
4. 建議包裝成宏使用
新聞熱點
疑難解答