麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

設計模式-02-單例

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

完整的單例通常需要實現三個方法(GCD)


  • share方法

    + (instancetype)sharePerson{    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        _person = [[self alloc] init];    });    return _person;}
  • alloc方法

    + (instancetype)allocWithZone:(struct _NSZone *)zone{    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        _person = [super allocWithZone:zone];    });    return _person;}
  • copy方法

    - (id)copyWithZone:(NSZone *)zone{    return _person;}

通過宏實現單例(GCD方式)


  • 代碼如下:

    //.h文件#define LYPSingletonH(name) + (instancetype)share##name;//.m文件#define LYPSingletonM(name) /static id _instance; / /+ (instancetype)share##name /{ /    static dispatch_once_t onceToken; /    dispatch_once(&onceToken, ^{ /        _instance = [[self alloc] init]; /    }); /    return _instance; /} / /+ (instancetype)allocWithZone:(struct _NSZone *)zone /{ /    static dispatch_once_t onceToken; /    dispatch_once(&onceToken, ^{ /        _instance = [super allocWithZone:zone]; /    }); /    return _instance; /} / /- (id)copyWithZone:(NSZone *)zone /{ /    return _instance; /}
  • 注意事項

    • 每行后邊的/表示下一行與該部分也是一個整體
    • .h文件下的一行要加分號,否則在引用的時候要加分號
    • 定義宏的新名字后邊必須加空格,因為編譯器,默認將新名字開始遇到的第一個空格前的部分作為宏的名字

通過非GCD方式實現單例


  • 實現代碼如下

    static Dog *_dog;+ (instancetype)shareDog{    @synchronized(self)    {        if (_dog == nil)        {            [NSThread sleepForTimeInterval:3];            _dog = [[self alloc] init];        }    }    return _dog;}+ (instancetype)allocWithZone:(struct _NSZone *)zone{    @synchronized(self)    {        if (_dog == nil)        {            [NSThread sleepForTimeInterval:3];            _dog = [super allocWithZone:zone];        }    }    return _dog;}- (id)copyWithZone:(NSZone *)zone{    return _dog;}
  • 注意事項

    • 為創建對象是分配內存和初始化的代碼加鎖,若不加鎖,當多個線程并發執行創建對象任務,將會破壞單例模式,創建出多個對象(通常在創建對象耗時比較長的時候發生)
      @synchronized(self) {}

注意


1.單例模式不能使用繼承實現,否則所有子類創建的對象都將是第一個創建的對象


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品久久久久久久久久 | 久久精品成人免费国产片桃视频 | 性少妇videosexfreexxx片 | 看免费黄色一级片 | 91精品国产一区二区在线观看 | av在线免费在线观看 | 手机av在线电影 | 精品亚洲一 | 午夜激情视频网站 | 羞羞视频.www在线观看 | 欧美黄色片一级 | 国产亚洲精品视频中文字幕 | 久久久久久麻豆 | 国产成人视屏 | 偿还的影视高清在线观看 | 欧美人的天堂一区二区三区 | 姑娘第5集高清在线观看 | 免费黄色在线观看网站 | 爱爱视频天天干 | 97久久日一线二线三线 | 欧美18一19sex性护士农村 | 免费放黄网站在线播放 | 久久艹国产精品 | 久久国产午夜 | 精品国产一区二区三区四 | 成人午夜淫片a | 久久蜜桃精品一区二区三区综合网 | 久久久电影电视剧免费看 | 91青青 | 99最新网址 | 国产一区二区三区四区五区精品 | 精品人人人人 | 亚洲一区 国产 | 一区二区三区在线播放视频 | 色吧综合网 | 免费的性生活视频 | 91精品国产一区二区在线观看 | 91在线视频福利 | 羞羞视频免费观看入口 | 免费黄色一级网站 | 欧美黑人伦理 |