單例模式的作用
可以保證在程序運行過程,一個類只有一個實例戈次,而且該實例易于供外界訪問
從而方便地控制了實例個數(shù),并節(jié)約系統(tǒng)資源
單例模式的使用場合
在整個應(yīng)用程序中,共享一份資源(這份資源只需要創(chuàng)建初始化1次)
<p>單例模式在ARC\MRC環(huán)境下的寫法有所不同均芽,需要編寫2套不同的代碼 可以用宏判斷是否為ARC環(huán)境 </p>
<pre>#if __has_feature(objc_arc)
//ARC
else
//MRC
endif</pre>
<p>提供1個類方法讓外界訪問唯一的實例 </p>
<pre>+ (instancetype)sharedMusicTool {
? ? if (_instance == nil) { // 防止頻繁加鎖
? ? ? ? @synchronized(self) {
? ? ? ? ? ? if (_instance == nil) { // 防止創(chuàng)建多次
?? ? ? ? ? ? ? _instance = [[self alloc] init];
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? return _instance;
}
+(id)allocWithZone:(struct _NSZone *)zone {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [super allocWithZone:zone];
});
return _instance;
}</pre>