iOS開發(fā)之單例模式

一. 單例模式簡介:
首先我們應(yīng)該明白,我們每個項目中AppDelegate就是一個完美的單例.
(1)在程序運行過程中,單例只有一個實例對象,而且該實例易于供外界訪問,從而方便控制了實例個數(shù),節(jié)約資源.
(2)單例一般用于工具類,在整個應(yīng)用程序中,字需要初始化一次,就可以共享一份資源.
(3)單例模式因為控制了實例化過程,所以累哦可以更加靈活實例化過程.
(4)單例對象一但被建立起來,對象指針被保留在靜態(tài)區(qū),在堆中分配的內(nèi)存空間,不會自動釋放,只有在程序終止,即殺死APP才會被釋放.
(5)單例類無法實現(xiàn)OC的繼承特性,因為使用繼承,同事也會繼承靜態(tài)變量,而子類和父類同時創(chuàng)建的時候只會創(chuàng)建一個先創(chuàng)建的實例對象,因此一般不做類的擴展.
(6)單例可用來傳值.
注:如果同一類型的對象總是要在不同是用例場景發(fā)生變化,單例就會引起數(shù)據(jù)的錯誤,不能保存彼此的狀態(tài).我們在使用單例類之前,一定要考慮好單例類是否適合類以后的擴展性,避免盲目濫用單例.

二.單例的代碼實現(xiàn):
單例都是繼承于NSObject,首先,聲明初始化方法

Singleton.h

@interface Singleton : NSObject

+(instancetype) shareInstance ;

@end

單例的實現(xiàn)方法有很多種,例如:

#import "Singleton.h"

static Singleton *instance = nil;
@implementtation Singleton
+(instancetype) shareInstance{
/// 1. GCD 最簡單,常用的方法,很方便
     static dispath_once_t onceToken;
     dispath_once(&onceToken, ^{
          if (instance == nil) {
              instance = [[self alloc] init]; 
// 或       instance = [[Singleton alloc] init];
          }
     });
return instance;
// 返回值的類型可以是id,instancetype,或者類名(Singleton),不過要與聲明保持一致.
// 2. 線程鎖,(GCD是線程封裝)
@synchronized (self) {
  // 為了防止多線程同時訪問對象, 造成多次分配內(nèi)存空間, 所以要加上縣城鎖
       if (instance == nil) {
           instance = [[self alloc] init];
      }
     return instance;
   }
}
@end

調(diào)用很簡單[Singleton shareInstance]獲取單例對象,做自己想干的事就好了.
單例很重要,用起來很方便,但并不難,這些在簡單項目中足夠了,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末放典,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子箍铲,更是在濱河造成了極大的恐慌笋鄙,老刑警劉巖营勤,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盗蟆,居然都是意外死亡促煮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門库菲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來账忘,“玉大人,你說我怎么就攤上這事熙宇”钋埽” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵烫止,是天一觀的道長蒋荚。 經(jīng)常有香客問我,道長馆蠕,這世上最難降的妖魔是什么期升? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮互躬,結(jié)果婚禮上播赁,老公的妹妹穿的比我還像新娘。我一直安慰自己吼渡,他們只是感情好容为,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寺酪,像睡著了一般坎背。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寄雀,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天得滤,我揣著相機與錄音,去河邊找鬼盒犹。 笑死懂更,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阿趁。 我是一名探鬼主播膜蛔,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼脖阵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起墅茉,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤命黔,失蹤者是張志新(化名)和其女友劉穎呜呐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悍募,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡蘑辑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坠宴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洋魂。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喜鼓,靈堂內(nèi)的尸體忽然破棺而出副砍,到底是詐尸還是另有隱情,我是刑警寧澤庄岖,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布豁翎,位于F島的核電站,受9級特大地震影響隅忿,放射性物質(zhì)發(fā)生泄漏心剥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一背桐、第九天 我趴在偏房一處隱蔽的房頂上張望优烧。 院中可真熱鬧,春花似錦链峭、人聲如沸畦娄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纷责。三九已至,卻和暖如春撼短,著一層夾襖步出監(jiān)牢的瞬間再膳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工曲横, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喂柒,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓禾嫉,卻偏偏與公主長得像灾杰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子熙参,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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

  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡單艳吠、最易理解的設(shè)計模式,也因為它的簡潔易懂孽椰,是項目中最...
    成熱了閱讀 4,254評論 4 34
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理昭娩,服務(wù)發(fā)現(xiàn)凛篙,斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 前言 本文主要參考 那些年栏渺,我們一起寫過的“單例模式”呛梆。 何為單例模式? 顧名思義磕诊,單例模式就是保證一個類僅有一個...
    tandeneck閱讀 2,515評論 1 8
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法填物,類相關(guān)的語法,內(nèi)部類的語法霎终,繼承相關(guān)的語法滞磺,異常的語法,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • 只要是下雨神僵,不管在哪里雁刷,都會有一種淅淅瀝瀝的孤寂感,不在乎別人會怎樣保礼,只一樣沛励,如果沒有帶傘,困在一個地方炮障,動彈不得...
    幸星子閱讀 254評論 0 0