applicationDidFinishLaunchingって?
2008/11/18
cocoa
iphone
objective-c
xcode
iphoneの開発初日です。
先週は、エディタでコード書いてで、gccでコンパイルしていましたが、そろそろXcodeを使いはじめます。
プロジェクトテンプレートからスタートして頭が???になったのでメモしておきます。
mainからどういったシーケンスで動くのだろうとおいかけようとしたら、いきなり下記のコードで悩みました。
#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 main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
UIApplicationMainで設定を読みこんでdelegateで実行って感じのようです。
おそらく、
Info.plistのNSMainNibFileのxxxをよんで、xxx.xibを読みこんでクラスを決定して、そのクラスには、applicationDidFinishLaunchingが実装されていて、画面の初期化が終わってからユーザー定義のapplicationDidFinishLaunchingが実行という流れかな。
applicationDidFinishLaunchingが自分で行う初期化の実装箇所のようです。
ちなみに、UIはInterfaceBuilderを使ってツールで作成のようです。
Xcode上で、xxx.xibをダブルクリックするとInterfaceBuilderが起動します。
右クリックメニューから「形式を指定して開く」でテキストとしてみると中身はxmlでいろいろ定義してあります。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// ここで初期化処理。
}
参考
iphone開発でもNSLogは使えます。
Xcode [実行]-[コンソール]でNSLogが出力されるコンソールがでてきます。
ログ出力
: