iOS單例模式

1.單例模式
單例模式是一種常用的設(shè)計(jì)模式,對于一個(gè)單例類,必須保證任意時(shí)刻只有一個(gè)單例對象,并且自行實(shí)例化該對象,并向整個(gè)系統(tǒng)提供該對象,也就是說無論實(shí)例化單例對象多少次,都只能創(chuàng)建出一個(gè)對象,該對象是全局的能夠整個(gè)系統(tǒng)所訪問
單例對象很像c中全局變量,單例類可以實(shí)現(xiàn)不同對象之間的數(shù)據(jù)共享

2.單例對象的創(chuàng)建方式
一般是以shared/current/default開頭, 并且是類方法

3.單例模式的應(yīng)用
1:單例類可以實(shí)現(xiàn)不同對象之間的數(shù)據(jù)共享
2:當(dāng)創(chuàng)建一個(gè)類需要消耗很大的性能的時(shí)候

4.單例創(chuàng)建

//SingleClass.h文件
#import <Foundation/Foundation.h>


@interface SingleClass : NSObject


@property (copy, nonatomic)NSString *name;


//單例類提供的一種創(chuàng)建單例對象方法
+ (SingleClass *)sharedSingleClass;


@end

//SingleClass.m文件

#import "SingleClass.h"


//1:創(chuàng)建一個(gè)全局靜態(tài)的單例子對象指針,初始值為nil
static SingleClass *single = nil;


@implementation SingleClass
+ (SingleClass *)sharedSingleClass{
    //2:調(diào)用GCD的once方法//網(wǎng)絡(luò):多線程
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{//大括號里面代碼在整個(gè)程序運(yùn)行過程只會(huì)被執(zhí)行一次//block-->代碼塊,代碼段-->函數(shù)指針
        //3:實(shí)例化single指針
        single = [[SingleClass alloc] init];//第一次調(diào)用該方法的對象才能進(jìn)行實(shí)例化
    });
    return single;//最后將實(shí)例化的對象返回//從第二次調(diào)用該方法,返回的都是第一次實(shí)例化的對象的首地址
}

@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

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

  • 簡介: 單例模式是一種常用的軟件設(shè)計(jì)模式。在它的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例類的特殊類。通過單例模式可以保證系統(tǒng)...
    RunnerFL閱讀 717評論 0 0
  • 一. 單例模式簡介 單例模式的作用可以保證在程序運(yùn)行過程,一個(gè)類只有一個(gè)實(shí)例,而且該實(shí)例易于供外界訪問從而方便地控...
    xx_cc閱讀 50,343評論 15 146
  • 原鏈接:http://www.itdecent.cn/p/4867dc92337e原作者:僅供我個(gè)人收藏學(xué)習(xí),原博...
    油菜花花花花閱讀 401評論 0 0
  • 關(guān)于有聲讀物英語學(xué)習(xí)的幾點(diǎn)看法 第一,之所以會(huì)有這個(gè)辦法,源于這樣幾個(gè)因素 1.課外英語培訓(xùn)班,在...
    我是玲兒訥閱讀 320評論 0 0
  • 過去,現(xiàn)在,未來 星幣皇后,寶劍侍從,圣杯國王 清楚自己的能力和限制,以落地,踏實(shí)和安全的方式生活,會(huì)存點(diǎn)小錢在身...
    醒過來閱讀 172評論 0 1

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