亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS單例模式(Singleton)

2019-11-14 18:17:35
字體:
來源:轉載
供稿:網友

轉自:http://www.49028c.com/lyanet/archive/2013/01/11/2856468.html

 

單例模式的意思就是只有一個實例。單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例。這個類稱為單例類。

1.單例模式的要點:

  顯然單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。

2.單例模式的優點:

  1.實例控制:Singleton 會阻止其他對象實例化其自己的 Singleton 對象的副本,從而確保所有對象都訪問唯一實例。
  2.靈活性:因為類控制了實例化過程,所以類可以更加靈活修改實例化過程
 
IOS中的單例模式
  在objective-c中要實現一個單例類,至少需要做以下四個步驟:
  1、為單例對象實現一個靜態實例,并初始化,然后設置成nil,
  2、實現一個實例構造方法檢查上面聲明的靜態實例是否為nil,如果是則新建并返回一個本類的實例,
  3、重寫allocWithZone方法,用來保證其他人直接使用alloc和init試圖獲得一個新實力的時候不產生一個新實例,
  4、適當實現allocWitheZone,copyWithZone,release和autorelease。

官方如下方式實現

static MyClass *class = nil;

@implementation MyClass

+(MyClass *)sharedMyClass{

    @synchronized (self){//為了確保多線程情況下,仍然確保實體的唯一性  

        if (!class) {        

            [[self alloc] init];//非ARC模式下,該方法會調用 allocWithZone         

        }

        return class;

    }

}

 

+(id)allocWithZone:(NSZone *)zone{

    @synchronized(self){      

        if (!class) {           

            class = [super allocWithZone:zone]; //確保使用同一塊內存地址           

            return class;           

        }       

        return nil;

    }

}

 

- (id)init;

{

    @synchronized(self) {       

        if (self = [super init]){           

            return self;

        }       

        return nil;

    }

}

 

- (id)copyWithZone:(NSZone *)zone;{   

    return self; //確保copy對象也是唯一   

}

 

-(id)retain{   

    return self; //確保計數唯一  

}

 

- (unsigned)retainCount

    return UINT_MAX;  //裝逼用的,這樣打印出來的計數永遠為-1  

}

 

 

- (id)autorelease

{   

    return self;//確保計數唯一   

 

- (oneway void)release

{   

    //重寫計數釋放方法  

}

 

再調試

MyClass *A = [[MyClassallocinit];

NSLog(@"A:%@",A);

MyClass *B = [MyClasssharedMyClass];

NSLog(@"B:%@",B);

MyClass *C = [A copy];

NSLog(@"C:%@",C);

 

打印出的是

 

A:<MyClass: 0x6a1e130>

B:<MyClass: 0x6a1e130>

C:<MyClass: 0x6a1e130>

都是指向同一塊內存地址

答案已經出來了

apple建議的方式顯然真正的確保了實體的唯一性

 

另外一種寫法是:

  1. + (AccountManager *)sharedManager  
  2. {  
  3.         static AccountManager *sharedAccountManagerInstance = nil;  
  4.         static dispatch_once_t PRedicate;  
  5.         dispatch_once(&predicate, ^{  
  6.                 sharedAccountManagerInstance = [[self alloc] init];   
  7.         });  
  8.     return sharedAccountManagerInstance;  
  9. }

     該寫法具有以下幾個特性:

    1. 線程安全。

    2. 滿足靜態分析器的要求。

    3. 兼容了ARC

 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品一区理论片飘花| 美女性感视频久久久| 亚洲国产精品推荐| 富二代精品短视频| 97久久精品人搡人人玩| 国产精品白嫩初高中害羞小美女| 26uuu亚洲伊人春色| 久久综合伊人77777蜜臀| 欧洲成人午夜免费大片| 日韩有码在线视频| 成人女保姆的销魂服务| 亚洲一区二区中文| 91国产视频在线播放| 亚洲乱亚洲乱妇无码| 欧美最顶级的aⅴ艳星| 成人在线观看视频网站| 日韩精品免费在线视频| 尤物tv国产一区| 97av在线视频| 中文字幕一精品亚洲无线一区| 日韩成人中文字幕| 亚洲欧美国产精品va在线观看| 国产精品亚洲视频在线观看| 911国产网站尤物在线观看| 成人网页在线免费观看| 成人激情综合网| 国产亚洲精品久久久久动| 欧美成人免费全部观看天天性色| 亚洲欧洲免费视频| 91精品久久久久| 国产精品视频一区二区三区四| 日韩女优人人人人射在线视频| 亚洲美女性生活视频| 日韩欧美高清在线视频| 成人精品aaaa网站| 久久成人国产精品| 亚洲人成网站色ww在线| 成人综合国产精品| 欧美寡妇偷汉性猛交| 欧美电影在线播放| 亚洲人成免费电影| 国产盗摄xxxx视频xxx69| 亚洲福利视频免费观看| 国产香蕉精品视频一区二区三区| 欧美日韩福利在线观看| 米奇精品一区二区三区在线观看| 91在线无精精品一区二区| 欧美怡春院一区二区三区| 国产精品夜间视频香蕉| 亚洲欧美制服综合另类| 国产97免费视| 在线视频欧美性高潮| 亚洲午夜av电影| 日韩有码在线观看| 青青青国产精品一区二区| 国产精品99久久99久久久二8| 国产精品a久久久久久| 成人免费观看网址| 亚洲精品国产免费| 欧美成人sm免费视频| 欧美高清不卡在线| 精品久久香蕉国产线看观看亚洲| 亚洲免费影视第一页| 国产ts人妖一区二区三区| 91超碰中文字幕久久精品| 亚洲一级免费视频| 久久九九免费视频| 久久久久久国产精品美女| 91精品国产高清久久久久久久久| 国产精品你懂得| 国产成人+综合亚洲+天堂| 国产91成人在在线播放| 91精品久久久久久综合乱菊| 精品国产拍在线观看| 久久久亚洲精品视频| 在线观看日韩视频| 影音先锋欧美在线资源| 亚洲欧美日韩在线高清直播| 亚洲精品日韩欧美| 欧美资源在线观看| 久久久国产精彩视频美女艺术照福利| 欧美劲爆第一页| 国产精品福利在线观看网址| 国产三级精品网站| 91av视频在线免费观看| 亚洲欧美综合区自拍另类| 成人免费网站在线观看| 亚洲视频777| 日韩久久精品成人| 一本一道久久a久久精品逆3p| 日韩成人av网| 精品中文字幕在线| 久久精品国产成人精品| 日韩一区在线视频| 国产精品久久久久秋霞鲁丝| 96pao国产成视频永久免费| 亚洲最大在线视频| 日本中文字幕久久看| 精品一区二区亚洲| 日韩视频免费在线观看| 亚洲色图18p| 亚洲精品视频在线观看视频| 欧美极度另类性三渗透| 日韩激情片免费| 亚洲图片在线综合| 亚洲a在线观看| 亚洲精品久久久久国产| 欧美激情精品久久久| 国产精品免费视频xxxx| 日韩中文字幕在线播放| 国产精品久久久久久久久久久不卡| 亚洲一区二区三区视频播放| 日本精品久久中文字幕佐佐木| 亚洲aa中文字幕| 国产亚洲在线播放| 久久手机免费视频| 亚洲欧美中文日韩在线| 欧美在线一区二区三区四| 欧美激情视频在线| 中文字幕亚洲欧美日韩在线不卡| 91久久久久久久一区二区| 日韩av在线天堂网| 97超碰蝌蚪网人人做人人爽| 91精品国产高清久久久久久| 成人久久18免费网站图片| 狠狠躁夜夜躁人人爽天天天天97| 亚洲国产精品国自产拍av秋霞| 欧美国产日韩视频| 久久亚洲精品网站| 韩国精品久久久999| 久久中文字幕国产| 岛国av午夜精品| 国产精品偷伦一区二区| 欧美放荡办公室videos4k| 国产97在线观看| 亚洲风情亚aⅴ在线发布| 91精品视频免费| 夜夜躁日日躁狠狠久久88av| 国内精品美女av在线播放| 日韩国产精品亚洲а∨天堂免| 8090理伦午夜在线电影| 久久精品国产成人| 亚洲色图国产精品| 国产精品美女主播在线观看纯欲| 欧美xxxx18国产| 欧美日韩xxx| 欧美极品少妇xxxxⅹ免费视频| 一区二区亚洲欧洲国产日韩| 欧美巨乳美女视频| 国产精品h在线观看| www国产亚洲精品久久网站| 色噜噜国产精品视频一区二区| 亚洲人成网7777777国产| 最近2019中文字幕大全第二页| 亚洲午夜未删减在线观看| 日韩中文字幕不卡视频| 91精品国产高清久久久久久91| 91亚洲精品一区| 国产激情综合五月久久| 国产综合香蕉五月婷在线| 欧美巨猛xxxx猛交黑人97人| 日本sm极度另类视频| 亚洲国产美女久久久久| 欧美日韩在线视频观看|