これは非常に奇妙に聞こえると思いますが、とにかく質問します。iPhone 用に複数の動作するアプリケーションを作成しましたが、元のビュー コントローラーにすべてを追加する必要があります。そうしないと、アプリがクラッシュします。これが私の例です:
ビューコントローラーで:
- (IBAction) someAction: (id) sender {
NSLog(@"lajkrbgl");
}
これはうまくいきます。しかし、「ファイルの追加」を実行して「Objective-C クラス」を選択し、同じコードを挿入すると、ボタンを押すたびにアプリがクラッシュします。オブジェクトを追加して、OS X の場合と同じように機能させるにはどうすればよいですか?
編集:以下は、新しいオブジェクトを作成するために取った手順です。これらの手順は、OS X アプリケーションを作成するときに役立ちました。
- Xcode の「Classes」フォルダを右クリックしました。
- 「追加>新しいファイル」を選択しました。
- 「Objective-C Class」と「NSObject」を選択しました。
- 「- (IBAction) someAction: (id) sender;」というアクションを作成しました。
- Interface Builder で、アクションを UIButton に接続し、"Touch Up Inside" を使用しました。
- 「ビルドして実行」ボタンをクリックしました。
その後、ボタンをクリックすると、アプリケーションが終了しました (まるでホーム ボタンをクリックしたかのように)。エラーは発生しませんでした。次に、アクションのコードを入れなかったことが原因であると判断したので、次にそれを行いました。
- (IBAction) someAction: (id) sender; {
NSLog(@"lajkrbl");
}
この後も、まったく同じ方法でクラッシュし、エラー メッセージも表示されませんでした。誰かが私が間違ったことを見ることができますか?
EDIT2:Xcode 4を実行したところです。ボタンをクリックすると、このコードが問題を引き起こしていることがわかりました(緑色の行の前に「**」を付けました)。
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
**int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
一体どうしてそれがうまくいかなかったのですか?プロジェクトを作成すると、Xcode によって作成されます。