重溫-單例模式,重溫-模式
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 @endView Code
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;}View Code
4. 建議封裝成宏使用