【Obj-C】シングルトン Grand Central Dispatch (GCD)

シングルトン Grand Central Dispatch (GCD)

iOS アプリ開発時にシングルトンを利用したプログラミングをする場合がありますが、
今までは下記のような感じでコーディングしていたのですが、

static User* sharedManager_ = nil;
+ (User*)getSharedInstance
{
  if(!sharedManager_){
    sharedManager_ = [[User alloc] init];
  }
  return sharedManager_;
}

モダンな書き方は Grand Central Dispatch (GCD) を利用して
下記のようにコーディングするそうです。

static User* sharedManager_ = nil;
+ (User*)getSharedInstance
{
  static dispatch_once_t disOnce;
  dispatch_once(&disOnce, ^{
    sharedManager_ = [[User alloc] init];
  });
  return sharedManager_;
}

最近まで知りませんでした。

ちなみに、dispatch_once を利用すると
そのロジックが1度だけ実行されることを保証するそうです。

タイトルとURLをコピーしました