iOS-OC和Swift單利創(chuàng)建

OC單利

#import "HttpTools.h"
+ (instancetype)shareManager;
#import "HttpTools.m"
+ (instancetype)shareManager
{
    static id instance;
    static dispatch_once_t onceToken;
    // onceToken默認(rèn)等于0, 如果是0就會(huì)執(zhí)行block, 如果不是0就不會(huì)執(zhí)行
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

Swift單利

推薦使用

// HttpTools.swift
    static let instance: HttpTools = HttpTools()

    class func shareHttpTools() -> HttpTools {
        return instance
    }

仿OC版

// 在Swift中, 類方法中是不允許定義靜態(tài)變量的
    static var once_t: dispatch_once_t = 0
    static var instance: HttpTools?
    
    /// 用于獲取單粒對(duì)象的類方法
    class func shareHttpTools() -> HttpTools{
        dispatch_once(&once_t) { () -> Void in
            instance = HttpTools()
        }
        return instance!
    }

單利優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1:一個(gè)類只被實(shí)例化一次,提供了對(duì)唯一實(shí)例的受控訪問。
2:節(jié)省系統(tǒng)資源

缺點(diǎn):

1: 單例對(duì)象一旦建立,對(duì)象指針是保存在靜態(tài)區(qū)的,單例對(duì)象在堆中分配的內(nèi)存空間,會(huì)在應(yīng)用程序終止后才會(huì)被釋放。
2: 單例類無法繼承,因此很難進(jìn)行類的擴(kuò)展。
3: 單例類的職責(zé)過重,在一定程度上違背了“單一職責(zé)原則”。
4: 單例不適用于變化的對(duì)象,如果同一類型的對(duì)象總是要在不同的用例場(chǎng)景發(fā)生變化,單例就會(huì)引起數(shù)據(jù)的錯(cuò)誤,不能保存彼此的狀態(tài)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 比特幣如火如荼,當(dāng)然學(xué)習(xí)python也能幫助我們掌握比特幣的行情,而且是自動(dòng)的。如圖,大大已經(jīng)寫好了獲取數(shù)據(jù)的程序...
    TianAff閱讀 497評(píng)論 1 3
  • 看到一段設(shè)置字體的代碼,瀏覽器能識(shí)別哪個(gè)就用哪個(gè) body{ font-family:"Helvetica Neu...
    孫孟君閱讀 571評(píng)論 0 0
  • 哇,在實(shí)體店或者超市看到一款顏值高的香薰,或者一款新出的XXX味護(hù)理品?是不是有點(diǎn)想買又怕味道或者香味太濃?無奈,...
    腦洞無極限閱讀 330評(píng)論 0 0
  • 原創(chuàng)2016-06-17溦夢(mèng)HL溦夢(mèng)真人圖書館 陪伴是最長(zhǎng)情的告白 父親,我愛你! 記憶中爸爸的手充滿了力量,長(zhǎng)滿...
    溦時(shí)光閱讀 290評(píng)論 0 0

友情鏈接更多精彩內(nèi)容