[ SPECIAL ]

Xcode4

クラス初期化時にデバッグメッセージが出力される

2011/08/31 Tomohiro Kumagai

□ クラス初期化時にデバッグウィンドウにメッセージが表示される。

Xcode4 で iPhone アプリのデバッグをしていたところ、デバッグウィンドウの "Target Output" のところに、次のメッセージが表示されているのに気が付きました。

Did you forget to nest alloc and init?

このメッセージがどこで出力されているかを探してみたところ、自分で定義したクラスの "initExWithStringOrNil:" という名のメソッドの処理が実行されたタイミングで、出力されていることが分かりました。

 

理由はどうやら、冒頭で基底クラスの init 系のメソッドを呼び出していないことが原因のようです。

自分の定義したこのクラスでは、最初に条件分岐を実行していて、その結果に応じて初期化方法を変えるという実装を行っていたのですけど、それがあまりよくなかったようです。

条件に応じて初期化方法を変えるところ。この行へ処理が移った時点では既に "Did you forget to nest alloc and init?" が表示されていました。

もっとも、このメッセージが表示されたからといって、プログラムの動作に支障があるという感じはなさそうでしたけど、個人的にはなんとなく、システムからの警告メッセージが出力されない形で納めておくと何かと良いように思います。

 

ちなみに、一般的な init 系のメソッドといえば、次のような形になると思います。

- (id)initWithStringOrNil:(NSString*)argValue

{

self = [super init];

 

if (self)

{

// ここで初期化処理を行います。

 

}

 

return self;

}

このような形でのプログラムに整えてみると、この "Did you forget to nest alloc and init?" のメッセージは出力されなくなったので、整えなくても実害はなさそうでしたけど、ともあれ今後はこういう形での実装を心掛けておくことにします。

 


 

カスタム検索

copyright © Tomohiro Kumagai @ EasyStyle G.K.
contact me: please from mail-form page.