iPhoneSDKアプリケーション開発ガイド

今週も引き続きcocos2dを用いたiPhoneアプリ制作を行っておりますが、iPhone4のRetinaに対応させるところで苦戦しているので、その辺のおすすめサイトなどがありましたらお教えいただけると幸いですっm
思えば本格的にプログラムの勉強し始めてから1ヶ月が経過しておりました。時が経つのは本当にはやい。やっと、Objective-C/Xcode/cocos2dにも慣れてきた感じです。。。

今週は、今読んでいる

で学んだことについて軽くUpしたいと思います。


この本は「InterfaceBuilder」を使わずにアプリを作成しているので、以前ご紹介したiPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩を読み終わった後に読むことをオススメします。1年くらい前の本なので、少し古いのですが、基本を学ぶのには適していると思います。

第3章 UI Kit入門
第4章 マルチタッチイベントとジオメトリ

の部分を一読しましたが、アプリケーション起動時にどのような流れでプログラムが走っているのかが詳細に記載されています。InterfaceBuilderで直感的にアプリを作成しているだけでは意識しなくてもよいが、実際にアプリを作成するときには必ず押さえておくべきところがよくまとまっていると感じます。


単純にHelloWorld!と表示させるアプリを作成するときでも、iPhoneアプリは、

・UIWindow
・UIViewController
・UIView
・UI部品(UIButton,UITextView・・・など)

という構造になっていること。また、ViewやUI部品を配置するときの座標指定のときに使用する、CGRectクラスについてもよくまとまっていました。


そして一番勉強になったのが、アプリ起動時の流れを詳細に記載しているところです。(一部わからないとこもあるのですが、、、そこは→で記載します。。。)
HelloViewというプロジェクト名で、画面には何も表示されない何の役にも立たないアプリ(笑)を作成した時の例です↓

1、main関数が呼び出され、アプリケーションのインスタンスが生成される
UIApplicationの委任クラス(Delegate)であるHelloViewAppDelegateオブジェクトを作成
NSAutorelasePoolの初期化
C言語を詳しくやっていないためか、main関数のargcとかargv[]とかよくわからない。。。

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

2、フレームワークが、HelloViewAppDelegateオブジェクトが

- (void) applicationDidFinishLaunching:(UIApplication*)application

メソッドを呼び出す。
フレームワークが自動的に呼び出すらしいのですが、その辺がイメージつかない。。。

3、ウインドウを初期化する

UIWindow *window = [UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

ビューを初期化する

UIView *myview = [UIView alloc] initWithFrame:[UIScreen mainScreen] bounds]];

ビューをウインドウと紐付ける

[window addSubview:myview];

ウインドウをキーウィンドウに指定し、表示する

[window makeKeyAndVisible];

InterfaceBuilderで作っていたときは、このような一連の流れを意識せずにアプリができていました。そのため、コードのみでアプリを作っていくフェーズになった際には、この本を読むことをオススメします♩