Objective-Cクラスオブジェクトの初期化

クラスオブジェクトは +(void)initializeメソッドを使って初期化することができます。
+(void)initializeメソッドは、はじめてクラスメソッドを呼び出すときに、呼び出されます。

NSObjectクラスで定義されている物を各クラスごとにでオーバーライドすることで実装します。
あるクラスで+(void)initializeメソッドが実装されていない場合、
代わりにスーパークラス(基底クラス)のものが呼び出されます。
その場合、スーパークラスのメソッドは(自分自身と、サブクラスの分で)二度呼び出されることになるので、
initializeメソッドは複数回呼び出されても平気なように実装する必要がある。

 //宣言
@interface A:NSObject
+ (void) initialize;
@end
 //定義
@implementation A
+ (void) initialize
{ 
     static BOOL once=NO;
     if(once)
     { return }
     else
     {
            once=YES;
 
        //初期化処理をココに書く    
      }
}
@end
id obj = [[A alloc] init ];

以下の順で呼び出される
( [NSObject initialize] ) // +initialize
→ [A initialize] // +initialize
→ [A alloc] // +alloc
→ [A_instance init] // – init

広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: iOS, Objective-C パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中