用代碼解釋為什么要用 '單例'

在整個工程中(全局)需要使用其它類中的方法時,并且我們需要其它類中的數(shù)據(jù)(此時不能新創(chuàng)建這個類的對象,否則不能拿到數(shù)據(jù)),這個時候需要使用單例.

單例的使用

例如:在 BTLocationManager.h 中:

+ (instancetype)sharedManager;

.m中:

static BTLocationManager *_instance;
+ (instancetype)sharedManager {
    NSLog(@"_instance=  %@", _instance);
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (_instance == nil) {
            _instance = [[self alloc]init];
        }
    });
    return _instance;
}

// startLocate 方法
- (void)startLocate {
        // 定位的方法
}

全局使用 BTLocationManager 類時,需要使用單例:

用單例調(diào)用 BTLocationManager 的方法
[[BTLocationManager sharedManager] startLocate];

用代碼解釋 '單例' 的作用

單例做的事情可以用另一種方式去解釋:如下
在你調(diào)用 startLocate 這個方法的時候?qū)懸粋€方法,然后在 BTLocationManager 中調(diào)用這個方法將 BTLocationManager 這個類創(chuàng)建的對象傳過來,例如:
我在 LBSManager這個類中需要使用到 BTLocationManager 這個類的對象,我需要將這個對象傳遞給 LBSManager ,首先在 BTLocationManager 創(chuàng)建一個對象,同時用全局變量記錄這個對象(否則出了這個方法就釋放了,在其它的類中就拿不到這個對象了):

BTLocationManager *locationManager = [[BTLocationManager alloc]init];
_locationManager = locationManager;

在 LBSManager.h 類中寫一個方法:

 - (void)handleGlobalLocationManager:(BTLocationManager *)locationManager;

LBSManager.m中實現(xiàn):

- (void)handleGlobalLocationManager:(BTLocationManager *)locationManager {
    _locationManager = locationManager;
}

然后BTLocationManager中調(diào)用,將:

LBSManager *lbsManager = [[LBSManager alloc]init];
[lbsManager handleGlobalLocationManager:_locationManager];

這樣就可以在 其LBSManager 類中調(diào)用 BTLocationManager 的方法了:如下

[_locationManager startLocate];
效果和單例一樣,這只是對單例的解釋

這時就可以在 LBSManager 中使用 BTLocationManager 的對象了,并且在這兩個類中只創(chuàng)建了一次 locationManager 對象,相當于單例的功能.
這樣完成一次全局的使用是相當麻煩的,所以單例的使用會很方便的讓我們在全局使用某個類,這個類的對象只需要創(chuàng)建一次,最好就是創(chuàng)建單例,否則可能會出錯(很可能會重復創(chuàng)建某個累的對象導致拿到的對象不是同一個,造成值傳遞為空的)或者比較繁瑣.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末布朦,一起剝皮案震驚了整個濱河市囤萤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌是趴,老刑警劉巖涛舍,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唆途,居然都是意外死亡富雅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門窘哈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吹榴,“玉大人,你說我怎么就攤上這事滚婉。” “怎么了帅刀?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵让腹,是天一觀的道長。 經(jīng)常有香客問我扣溺,道長骇窍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任锥余,我火速辦了婚禮腹纳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己嘲恍,他們只是感情好足画,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佃牛,像睡著了一般淹辞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俘侠,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天象缀,我揣著相機與錄音,去河邊找鬼爷速。 笑死央星,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的惫东。 我是一名探鬼主播等曼,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凿蒜!你這毒婦竟也來了禁谦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤废封,失蹤者是張志新(化名)和其女友劉穎州泊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漂洋,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡遥皂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了刽漂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片演训。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贝咙,靈堂內(nèi)的尸體忽然破棺而出样悟,到底是詐尸還是另有隱情,我是刑警寧澤庭猩,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布窟她,位于F島的核電站,受9級特大地震影響蔼水,放射性物質(zhì)發(fā)生泄漏震糖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一趴腋、第九天 我趴在偏房一處隱蔽的房頂上張望吊说。 院中可真熱鬧论咏,春花似錦、人聲如沸颁井。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚤蔓。三九已至卦溢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秀又,已是汗流浹背单寂。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吐辙,地道東北人宣决。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像昏苏,于是被迫代替她去往敵國和親尊沸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

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

  • 單例模式(SingletonPattern)一般被認為是最簡單贤惯、最易理解的設計模式洼专,也因為它的簡潔易懂,是項目中最...
    成熱了閱讀 4,253評論 4 34
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理孵构,服務發(fā)現(xiàn)屁商,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法颈墅,類相關的語法蜡镶,內(nèi)部類的語法,繼承相關的語法恤筛,異常的語法官还,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • AFHTTPRequestOperationManager 網(wǎng)絡傳輸協(xié)議UDP、TCP毒坛、Http望伦、Socket、X...
    Carden閱讀 4,337評論 0 12
  • 編碼規(guī)范習慣: html標簽命名依據(jù)功能或者標簽在頁面中的含義來明明粘驰;盡量不要用樣式來明明元素屡谐; CSS中用兩個空...
    mianmiani閱讀 301評論 0 0