沖縄が日本のシリコンバレーのようになってほしいと願うiOSエンジニアのブログ

世のエンジニアの役に立つようなブログにしたいなぁ

InterfaceBuilderを使わずiPhoneアプリを開発

three20などの、iphoneアプリ開発ライブラリを使う際、Window-based Applicationのテンプレートなどで、デフォルトで設定されるnibファイルを使わず、メイン画面から独自のビューをつくって開発したい場合などに、nibファイルを削除する場合の手順をメモ。


1.Window-based Applicationを選択
2.MainWindow.xibを削除
3.アプリの起動時に nib ファイルを読み込まないように、 plist ファイルのエントリを削除
 (1) *****-Info.plist (***** は作成したプロジェクト名)をダブルクリックで開く
 (2) 一番下にある「Main nib file base name」という項目を削除

4.デフォルトでは、フレームワークは nib ファイルから適切な Delegate クラスを取得しているが、その nib ファイルを削除したので、起動時に Delegate クラスを明示的に指定する必要がある。
 (1) main.m の UIApplicationMain() の呼び出しを、以下のように書き換える

int retVal = UIApplicationMain(argc, argv, nil, @"*****AppDelegate");

(以降は必須ではない)
5.Delegate クラスの @property, @synthesize を削除してしまってかまいません。
 (1) Classes/*****AppDelegate.h の以下の行と

@property (nonatomic, retain) IBOutlet UIWindow *window;

 (2) Classes/*****AppDelegate.m の以下の行が削除できます。

@synthesize window;


Interface Builder を使わない iPhone アプリを作る手順 - WebOS Goodies


Interface Builderを使わずに作るiPhoneアプリケーション作成入門 : アシアルブログ


ちなみに、上記の手順を毎回行ないたくない場合、nibファイルを使わないテンプレートを作成したい場合は、下記参照


nibファイルを使わないテンプレートを作る(1)Window-Based Application - ねこじたclockwork


InterfaceBuilderを使ってViewをたくさん作成すると、iPhone実記のリソースを多く使うことになって、処理が軽くならないそうです。
特にゲーム画面などでは、入力から出力までのレスポンスをすばやく行なう必要があるので同一View内で画面繊維させるほうがいいみたいです。