Xcode,Objective-C

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
go

Xcode,Objective-C

#1

投稿記事 by go » 14年前

警告、エラーが無くビルドできたものの落ちるので、デバッガで調べたところ、

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}

int retVal = UIApplicationMain(argc,argv,nil,nil);に赤矢印がついていました。ここに問題があるんでしょうが、なにが原因かわかりません。。

わかるかたおねがいします。

UN
記事: 18
登録日時: 14年前
住所: 神奈川県

Re: Xcode,Objective-C

#2

投稿記事 by UN » 14年前

ちょっと説明するにも、説明する項目が多すぎるのでざっくりと説明します。
文法を見る限り、恐らくIPhone?かなにかだと思いますが、
UIApplicationMainの第3,第4引数にそれぞれUIAplicationクラスを敬称したクラスと
Delegateを指定しなければいけません。UIApplicationMain関数に関しては他の参考サイトのほうが
ずっと詳しく説明しているのでそちらを参考にしてみてください。

ではなぜnilでも平気なのか、という疑問がでますが、
プロジェクトの***_lnfo.plistを開いて、一番下のMain nib file~~~
という場所に注目してください。
これはUIApplicationMainを呼ばれたときに、最初に呼ぶnibファイルはどれかというのを
指定することができます。
nibファイルというのはInterFaceBuilderという、GUIベースでもviewを作成できるようにしたツールのようなものです。
通常プロジェクトを作成した段階では、MainWindowというnibファイルが指定されているかと思います。

これらをふまえて本題のUIApplicationMainで落ちるという原因として考えらそうなのは、
1:***_lnfo.plistでnibファイルを指定していない(自分のdelegateなどを渡して管理したい場合は逆にここを消さないといけない)
2:1で指定したnibファイルがプロジェクトにリンクされていない
3:nibファイルはリンクされているが、その先のUIControllerでまずい処理をしている
nibファイルベースで作成しているのにloadviewをオーバーライドしている等

いずれにせよ、原因が無数に考えられるのでもう少し詳しく調べてみてください。
かなりUIKit独自のルールばかりでこのへんは苦しめられるところなのですが、
UIKitを使用して作成する以上、上記であげた専門用語、およびその意味を理解することは
避けては通れません。InterFaceBuilderを使用して組む場合には適当にやってもそれなりに動きますが・・

go

Re: Xcode,Objective-C

#3

投稿記事 by go » 14年前

ありがとうございました!なんとか走りました。ただ言われた事を無駄にしないためにも調べ倒してみます。

閉鎖

“C言語何でも質問掲示板” へ戻る