<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS 單例模式 學習 "52個方法 第6章 45條 使用 dispath_once 來執行只需運行一次的線程安全代碼"

      百度定義:單例模式是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個實例.

      維基百科:在軟件工程中,單例是一種用于實現單例的數學概念,即將類的實例化限制成僅一個對象的設計模式。

      簡單理解:單例模式 是只有有一個實例對象的設計模式

      這次 使用 單例 用 gcd 來創建

      解釋幾個關鍵詞

      dispatch_once  :這個代碼塊 在整個應用的生命周期 只執行一次, 并且線程安全(如果被多個線程調用,該函數會同步等待直至代碼塊完成。gcd的底層做處理保證線程安全)

      dispatch_once_t:(參數)這個斷言 是聲明這個代碼塊是否已經創建過了

      優點:

      (1)dispatch_once 線程安全

      (2)代碼簡潔

      (3)高效(比@synchronized 的兩倍 "52個技巧上說的")

      我的使用場景很簡單, 我想創建一個單例字典 存儲 刷新關鍵字 利用邏輯變化條件 指定刷新頁面

      我寫的枚舉恰好用到了 "52個技巧"里面學到的知識,因為  枚舉 不一定得是 正整數 還可以是 四個字符的(通常4個字符代表一個字節 int 是4個字節)

      這樣 我可以定義不同頁面的枚舉 并且每個頁面有自己獨立的枚舉參數

      使用:

      使用的時候 直接調用 類方法里面的實例方法 [AHFRefreshPageUtil shareInstance]setNeedRefreshStatus:YES type:AHFSearchRefreshTypeAll];

      這樣可以保證鍵值對 唯一

      展示創建單例:

      //
      //  AHFRefreshPageUtil.h
      //  dailylife
      //
      //  Created by HF on 16/5/3.
      //
      //
      
      #import <Foundation/Foundation.h>
      
      @interface AHFRefreshPageUtil : NSObject
      
      
      + (AHFRefreshPageUtil *)sharedInstance;
      
      @end
      

       

      //
      //  AHFRefreshPageUtil.m
      //  dailylife
      //
      //  Created by HF on 16/5/3.
      //
      //
      
      #import "AHFRefreshPageUtil.h"
      
      @implementation AHFRefreshPageUtil
      {
          NSMutableDictionary *refreshDictionary;
      }
      static AHFRefreshPageUtil *refreshPageUtil;
      
      - (instancetype)init
      {
          self = [super init];
          if(self){
              refreshDictionary = [NSMutableDictionary dictionary];
          }
          return self;
      }
      
      + (AHFRefreshPageUtil *)sharedInstance
      {
          static dispatch_once_t onceToken;
          dispatch_once(&onceToken, ^{
              refreshPageUtil = [[AHFRefreshPageUtil alloc] init];
          });
          return refreshPageUtil;
      }
      //待添加目標實例方法

       

      其實 這里 這么寫有潛在的bug  假如 使用

      [[AHFRefreshPageUtil  alloc]init] 就是 普通的初始化了,不是單例用法了 所以  應該 把alloc 和 copy 都重寫 防止意外出錯,但是 我這里就默認 這一個用法,如果 出現 alloc 用法(并沒有類似需求的情況下) 那一定是豬隊友干的,review代碼 好好說說他 就好了 哈哈 此處 不再多余添加代碼(如果你想寫的完美 可以嘗試重寫 alloc copy 方法 讓他們返回時候 都是 同一個實例"sharedInstance" 就好了)

      我的一個技術網友 總結的挺好的 簡單一句話" 主要看如何實現線程唯一的創建 "

      posted on 2016-05-03 17:16  ACM_Someone like you  閱讀(790)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 年日韩激情国产自偷亚洲| 2020中文字字幕在线不卡| 特级做a爰片毛片免费看无码| 少妇精品视频一码二码三| 艳妇乳肉豪妇荡乳在线观看| 亚洲精品蜜桃久久久久久| 国产稚嫩高中生呻吟激情在线视频| 国产不卡一区二区精品| 国内精品久久久久久久97牛牛| 亚洲国产综合精品2020| 国产精品福利中文字幕| 亚洲欧美日韩精品成人| 高清自拍亚洲精品二区| 国产精品国产三级国快看| 桂平市| 欧美一区二区三区欧美日韩亚洲 | 国产亚洲一二三区精品| 国产在线国偷精品产拍| 中文字幕一区二区三区久久蜜桃| 一本色道久久—综合亚洲| 华人在线亚洲欧美精品| 邓州市| 国产三级a三级三级| 女人扒开的小泬高潮喷小 | 东京热人妻无码一区二区AV| 亚洲欧美人成人综合在线播放| 久久精品国产亚洲av麻豆长发| 久久精品国产2020| a男人的天堂久久a毛片| 亚洲国产日韩精品久久| 国产午夜A理论毛片| 自拍偷自拍亚洲精品播放| 国产精品午夜无码AV天美传媒| 国产精品国产三级国产午| 精品亚洲国产成人av| 盐池县| 成人国产精品日本在线观看| 无码成人一区二区三区| 日本高清一区免费中文视频| 国产极品粉嫩馒头一线天| 日韩一区二区三区日韩精品|