iOS SDKによるiPhone/iPadアプリケーション開発入門

第2回 iOSアプリケーションの基本構成

この記事を読むのに必要な時間:およそ 3 分

連載2回目となる今回は,いわゆるHello Worldプロジェクトの作成します。ただしInterface Builderを使った一般的な方法とは異なり,コードのみでプログラムを作成します。それを通してiOSアプリケーションの構成要素の基礎を理解することを目指します。

プロジェクトの作成

Xcodeで新規プロジェクトを作成します。プロジェクト名は「GihyoSample01」とします。テンプレートにWindow-based Applicationを選択します。Productは"iPhone"とし,"Use Core Data for storage"にはチェックを付けないようにします。

図1 プロジェクトの作成

図1 プロジェクトの作成

nibファイルを使わないアプリケーションの設定

プロジェクトの作成が完了したら、まずはアプリケーションのロードをnibファイルから行わないように変更します。nibファイルから起動するための設定はGiphyoSample01-Info.plistファイルに記述されています。コードでアプリケーションを起動するためにはこの設定を削除する必要があります。ついでにMainWindow.xib自体も削除してしまいましょう(下図参照)⁠

図2 nibファイルの削除

図2 nibファイルの削除

続いて,Other Sourcesにあるmain.mを見てみます。ここにあるmain関数からアプリケーションが起動されます。

int main(int argc, char *argv[]) {
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];  // --- (1)
  int retVal = UIApplicationMain(argc, argv, nil, @"GihyoSample01AppDelegate");  // --- (2)
  [pool release];
  return retVal;
}

main関数内では以下のことが行われています。

まず,自動開放プールが初期化されています(main.m-(1))⁠これはプログラム内でautoreleaseを利用できるようにするためのものです。

次に,UIApplicationMainはアプリケーションの初期化を行う関数で,4つの引数を受け取っています(main.m-(2))⁠

argc, argvは,起動時にアプリケーションから渡されたすべての引数が含まれます。

第3パラメータにはアプリケーションの主クラス名を指定します。nilを指定するとUIApplicationクラスが使用されます。これは通常変更する必要はありません。

第4パラメータにはアプリケーションデリゲートのクラス名を指定します。nilを指定するとnibファイル(通常MainWindow.nib)からアプリケーションデリゲートをロードするという意味になります。Interface Builderを使わずにコードでアプリケーションを作成するには,ここにアプリケーションデリゲートのクラス名を渡す必要があります。

ここでは,UIApplicationMain関数の第4引数にGihyoSample01AppDelegateという文字列を指定することで,アプリケーションデリゲートクラスにGihyoSample01AppDelegateを使用することを指示しています。

iOSアプリケーションの構成

アプリケーションデリゲートクラス

アプリケーションデリゲートクラスは,アプリケーションの起動が完了した場合や,バックグラウンドに移動された際,リモート,ローカル通知を受け取った時,アプリケーションが修了された際など,アプリケーションイベントに対する動作をカスタマイズするために実装するクラスです。コード的にはUIApplicationDelegateプロトコルを実装したクラスをとなります。最低限の仕事としてはアプリケーションの起動が完了した際に呼び出されるapplication:didFinishLaunchingWithOptions:メソッドを実装することです。

ウィンドウ,ビュー,ビューコントローラ

ウィンドウは,iOSアプリケーションの画面全体を表現します。通常UIWindowクラスのオブジェクトを使用します。一方ビューはナビゲーションバー,ボタン,テキストボックスなどの,画面上に表示される一つのコンポーネントを表現するオブジェクトです。これらはUIViewまたはそのサブクラスのオブジェクトとして実装されています。ビューはウィンドウに貼りつけられる形で画面に表示されます。

ビューコントローラは一連のビューの表示と管理を担当するオブジェクトで,UIViewControllerクラスのサブクラスとして実装されます。これは端末の向きを変えたときの動きに代表される,iOSアプリケーションで使われる標準的なインタフェース動作のデフォルト実装を提供してくれます。

著者プロフィール

臼井洋文(うすいひろふみ)

WEBアプリケーションエンジニア。京都府京都市出身。仕事ではPerlでサーバサイドプログラムを書きつつ,Objective-CでiPhoneアプリケーションの開発を行っている。最近はエンジニアも体力勝負という考えのもと,ボルダリングで体力作りに励んでいる。

twitter:usuihiro
blog:http://d.hatena.ne.jp/usuihiro1978/

コメント

コメントの記入