IOS常用的設計模式包括:單例模式、委托模式、觀察者模式和MVC模式。
這裡主要講單例模式
單例模式
-問題: 主要解決應用中只有一個實例的問題(只需要某個類的實例)
-原理:一般會封裝一個靜態屬性,並提供靜態實例的創建方法
-應用:單例類
// Singleton.h @interface Singleton : NSObject + (Singleton *)sharedManager; @property (nonatomic, strong) NSString* stingletonData; @end
#import "Singleton.h" @implementation Singleton @synthesize SingletonData = _singletonData; static Singleton *sharedManager = nil; + (Singleton *)sharedManager { static dispatch_once_t once; static dispatch_once_t onceToken; dispatch_once(&once, ^{ shardManager = [[self alloc] init]; }); return shardManager; } @end
包含了一個靜態變量singletonData, 類方法采用了GCD技術(基於C語言的多線程訪問技術),它的作用時在整個應用程序生命周期中只執行一次代碼塊({})。dispatch_once_t是GCD的結構體,使用時需要傳遞一個指針。
dispatch_once函數能保證函數只會被運行一次,還意味著運行是線程同步的。