Google

2011年5月1日日曜日

Objective-Cのクラスメソッド

面倒な手続きを家内にお願いしたりしながら、ANGEWORKとしての仕事に注力する日々。
最近ちょっとiPhone開発でハマった事があったのでここでメモしときます。

で、何があったかといいますと、
「整形したNSStringを返す」クラスメソッドを呼ぶとクラッシュ。
という現象でした。
しかも100%ではないという問題。

現物は出せませんが、こういう構造でした。

@interface StrUtil {
}
+ (NSString*) getStr :(int) param;

引数の値を元にして文字にするという、どこにでもあるやつです。
呼び出し方は以下のようにします。

 NSString* hoge = [StrUtil getStr: 100];

retainCountにさえ気をつければ普通に使えるはず、、、。
が、高確率でエラー。でもデバッガで追うと大丈夫だったり。
出たエラーを良く読むと、このクラスにはセレクタがありません!とな。
あるじゃん!

と思ってFW内部の動きを見ていったら解決。
なんと、NSObject派生をしていなかった事でした。
staticしかないから要らんかと思ってましたが、甘かった。
だったらビルド時にアドレスが決定される単純な関数にしろということですね。


なんてことはない話ですが、ネットであまり見当たらなかったので一応。

0 件のコメント:

コメントを投稿