iOS中的兩種單列模式實現

單例模式算是開發中比較常見的一種模式了。在iOS中,單例有兩種實現方式(至少我目前只發現兩種)。根據線程安全的實現來區分,一種是使用@synchronized,另一種是使用GCD的dispatch_once函數。

要實現單例,首先需要一個static的指向類本身的對象,其次需要一個初始化類函數。下面是兩種實現的代碼。

1、@synchronized

staticInstanceClass*instance;

+(InstanceClass*)defaultInstance{

@synchronized(self){

if(instance==nil){

instance=[[InstanceClassalloc]init];

}

}

returninstance;

}

2、GCD

staticInstanceClass*instance;

+(InstanceClass*)defaultInstance{

staticdispatch_once_tonceToken;

dispatch_once(&onceToken,^{

instance=[[InstanceClassalloc]init];

});

returninstance;

}

總的來說,兩種實現效果相同,但第二種GCD的實現方式寫起來比較簡單。如果不習慣GCD的方式,可以使用第一種方式。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 進程和線程 首先,在了解多線程之前要了解什么是進程,什么是線程 什么是進程呢?進程是指在系統中正在運行的一個應用程...
    擱淺的青蛙閱讀 408評論 0 0
  • iOS中GCD的使用小結 作者dullgrass 2015.11.20 09:41*字數 4996閱讀 20199...
    DanDanC閱讀 902評論 0 0
  • 目錄: (一)線程與進程之間的區別 (二)為什么需要學習多線程 (三)多線程任務執行方式 (四)多線程執行的...
    KingLionsFrank閱讀 805評論 6 6
  • NSThread 第一種:通過NSThread的對象方法 NSThread *thread = [[NSThrea...
    攻城獅GG閱讀 859評論 0 3
  • 在開發中經常會用到單例設計模式,目的就是為了在程序的整個生命周期內,只會創建一個類的實例對象,而且只要程序不被殺死...
    不要重名就好閱讀 557評論 0 0