iOS 設計模式之單例模式

weixin_33866037發表於2016-03-19

如果覺得我寫的還不錯,請關注我的新浪微博@小橘爺,最新文章即時推送~

單例模式

單例模式的作用是解決“應用中只有一個例項”的一類問題。

Objective-C 實現原理

單例模式一般會封裝一個靜態屬性,並提供靜態例項的建立方法。

實現的參考程式碼如下:

@interface Singleton : NSObject
// 獲取單例的方法
+ (Singleton *)sharedManager;
@end

#import "Singleton.h"
@implementation
// 建立靜態變數
static Singleton *sharedManager = nil;
+ (Singleton *)sharedManager
{
    // GCD 提供的結構體,使用時將它的地址傳給 dispatch_once 函式
    static dispatch_once_t onceToken;
    // dispatch_once 函式,作用是在整個程式的生命週期中只執行一次程式碼塊,並且它能夠記錄該程式碼塊是否被呼叫過
    dispatch_once(&onceToken, ^{
        sharedManager = [[self alloc] init];
    }];  
    return sharedManager;
}
@end

具體的實現大體就是這些了。其中,dispatch_once 函式不僅意味著程式碼僅會被執行一次,而且還意味著此執行還是執行緒同步的。當我們使用了 dispatch_once 函式時,就不再需要使用互斥鎖(@synchronized)了~

相關文章