iOS中的單例模式如何銷毀重建

在iOS中,單例模式是比較常用的一種模式燥狰,保證相關(guān)代碼只會執(zhí)行一次揣云,但有時候會有一種場景捕儒,需要銷毀單例進行重建。
如果不采用GCD提供的dispatch_once方法邓夕,需要加鎖操作刘莹,是比較耗性能的。
那么這個時候如何繼續(xù)采用dispatch_once方法焚刚?
dispatch_once_t的描述是:

typedef long dispatch_once_t;

GCD創(chuàng)建:dispatch_once中dispatch_once_t類型為typedef long
? onceToken= 0点弯,線程執(zhí)行dispatch_once的block中代碼
? onceToken= -1,線程跳過dispatch_once的block中代碼不執(zhí)行
? onceToken= 其他值矿咕,線程被線程被阻塞抢肛,等待onceToken值改變
用途:限制創(chuàng)建狼钮,提供全局調(diào)用,節(jié)約資源和提高性能捡絮。參考
常見的應(yīng)用場景:
? UIApplication
? NSNotificationCenter
? NSFileManager
? NSUserDefaults
? NSURLCache
? NSHTTPCookieStorage

dispatch_once在判斷是否需要執(zhí)行的關(guān)鍵語句:

if(DISPATCH_EXPECT(*predicate, ~0l) != ~0l) {
dispatch_once_f(predicate, context, function);
}

可以了解到 dispatch_once_t參數(shù)的初始值就是0l熬芜,只需要重置dispatch_once_t參數(shù)及實例參數(shù),具體代碼如下:

static SpTest *sInstance = nil;
static dispatch_once_t onceToken;

+ (instancetype)sharedManager {
  dispatch_once(&onceToken, ^{
    sInstance = [[self alloc] init];;
    NSLog(@"dispatch once");
});

  return sInstance;
}

+ (void)tearDown {
  sInstance=nil;
  onceToken=0l;
}

回過頭來想想福稳,其實這樣實現(xiàn)是一種比較粗陋的方式涎拉,需要考慮在銷毀的同時實例的使用狀況等,其實是違背dispatch_once使用的初衷的的圆。
不排除真的有這種單例需要銷毀的場景曼库,但多數(shù)需要銷毀的單例實際上可能不適用于單例這種模式,可能需要重新考慮架構(gòu)設(shè)計問題略板。

鏈接:http://www.reibang.com/p/82ba1af6bbdc

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毁枯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子叮称,更是在濱河造成了極大的恐慌种玛,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓤檐,死亡現(xiàn)場離奇詭異赂韵,居然都是意外死亡,警方通過查閱死者的電腦和手機挠蛉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門祭示,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谴古,你說我怎么就攤上這事质涛。” “怎么了掰担?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵汇陆,是天一觀的道長。 經(jīng)常有香客問我带饱,道長毡代,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任勺疼,我火速辦了婚禮教寂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘执庐。我一直安慰自己酪耕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布耕肩。 她就那樣靜靜地躺著因妇,像睡著了一般问潭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上婚被,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天狡忙,我揣著相機與錄音,去河邊找鬼址芯。 笑死灾茁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谷炸。 我是一名探鬼主播北专,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼旬陡!你這毒婦竟也來了拓颓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤描孟,失蹤者是張志新(化名)和其女友劉穎驶睦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匿醒,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡场航,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了廉羔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溉痢。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖憋他,靈堂內(nèi)的尸體忽然破棺而出孩饼,到底是詐尸還是另有隱情,我是刑警寧澤举瑰,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布捣辆,位于F島的核電站蔬螟,受9級特大地震影響此迅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旧巾,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一耸序、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鲁猩,春花似錦坎怪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘁酿。三九已至,卻和暖如春男应,著一層夾襖步出監(jiān)牢的瞬間闹司,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工沐飘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留游桩,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓耐朴,卻偏偏與公主長得像借卧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子筛峭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容