2012年4月23日月曜日

warning: 'クラス名' may not respond to '-メソッド名' エラーについて

Xcodeのナビゲーターウィンドウの警告ウィンドウに以下のようなエラーが表示されました。

warning: 'クラス名' may not respond to '-メソッド名'

これはヘッダファイルにメソッド定義がされていない場合に起こるエラーのようです。ヘッダファイルに適切な定義を書くことでエラーは消えました。

「unrecognized selector sent to instance」エラーについて

コンパイル時に以下のエラーが返ってきてアプリが落ちてしまいました。

-[DetailViewController parseXMLFileAtURL:]: unrecognized selector sent to instance アドレス'

原因

以下の参考記事から、呼び出そうとしたメソッドがなかった場合に発生するエラーのようです。案の定 parseXMLFileAtURL:メソッドを書き忘れていました。追加したところエラーは消えました。

参考記事

iPhone実行時のエラー:unrecognized selector sent to instance xxxxxxxxx | SE & Programmer's Blog

2012年4月22日日曜日

文字列連結

文字連結について備忘録で書きます。

UIPickerViewで「Terminating app due to uncaught exception 'NSRangeException', reason:」でアプリが落ちる

UIPickerView関連を使ったプロジェクトをコンパイルしたところ以下のエラーが返ってきました。

「Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 100 beyond bounds [0 .. 99]'」

原因

ピッカーの列のセル数を設定する pickerView: numberOfRowsInComponent:メソッドで返した値と、ピッカーの表示内容にを設定する pickerView: titleForRow:メソッドで返した値(数)が一致しない場合に発生するようです。

深く調べた訳ではないのですが自分はここを調整したところエラーは消えました。

int型からNSString型へ文字列変換する

int型からNSString型へ型変換するときの覚書きです。

2012年4月19日木曜日

Tabbed Applicationプロジェクトで画面遷移させたときのメモ

Tabbed Applicationプロジェクトで画面遷移をさせたときのメモ。

「Duplicate declaration of method メソッド名」エラー

コンパイル時に以下のようなエラーが出ました。

「Duplicate declaration of method メソッド名」

このエラーはメソッドの重複におこるエラーのようです。重複しているメソッドを消すことでこのエラーは消えました。

参考記事

xcode error2 | SE一年生

関連記事

Objective-C(メソッドのオーバーロード)| Selection 9
UIAlertView buttonClickedAtIndex Duplicate Declarations | Stack Overflow

2012年4月18日水曜日

Apple Mach-O Linker (id) Error clang: error: linker command failed with exit code 1 (use -v to see invocation)について

「linker command failed with exit code 1 (use -v to see invocation)」エラーに遭遇したので備忘録で書きます。

このエラーの原因はいろいろとあるようです。エントリーの最後に他の原因のものに関する記事のリンクも載せておきました。

原因

違うクラスで同じ変数を使用していた

ログをよく見ると

ld: duplicate symbol _OBJC_IVAR_$_BaseView.selected in ・・・

となっていました。

自分はAクラス、Bクラス両方で同じように「@class BaseView」というクラスを宣言していました。この場合だと2つのクラスで1つの変数を使用してしまっていることになります。これだと怒られてしまうので、どちらかを例えば「@class BaseView2」にするなどして対処します。

参考記事

iPhoneアプリを作ってみよう:第3回 タイマーアプリ(#2.ストップウォッチ作成編)- コメント | もとまか日記

関連記事

duplicate symbol エラー | プログラミング雑記
Xcodeのわかりにくいエラーメッセージ | migihidariの日記
Apple Mach-O Linker (id) Errorについて | iPhoneアプリ開発メモ