2013年3月22日金曜日

Obj-Cでのstaticとextern利用パターン

Cのストレージクラス auto, register, static, extern の解説。


Objective-Cではこのうち static, externが使われる。

以下、取り上げられているパターン。

シングルトンのインスタンス保持
+ (instancetype)sharedInstance {
  static id _sharedInstance = nil;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
      _sharedInstance = [[self alloc] init];
  });

  return _sharedInstance;
}

グローバル文字列定数の定義
extern NSString * const kAppErrorDomain;

グローバルなENUMの定義
typedef NS_ENUM(NSUInteger, TransactionState) {
    TransactionOpened,
    TransactionPending,
    TransactionClosed,
};

extern NSString * NSStringFromTransactionState(TransactionState state);


0 件のコメント:

コメントを投稿