2008年6月26日木曜日

Creating an iPhone Applicationその2

Creating an iPhone Application
http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action

"Creating an iPhone Applicationその1"のメモの続きです。その1と同様に翻訳じゃないのでたくさん抜けていますし、たくさん間違っているハズですが、原文を読むときの参考にはなると思います。

■ Defining the Application Delegate
MoveMeのApplication DelegateクラスはMoveMeAppDelegate.hとMoveMeAppDelegate.mにあります。

Application DelegateオブジェクトはUIApplicationオブジェクトと共にアプリケーションの状態が変化したときに機能します。

 アプリケーションのウィンドウを設定し、ユーザインタフェースを初期化
 アプリケーション内で独自作成したデータ エンジンの初期化
 アプリケーション内のURLを開く
 装置の方向が変化するとそれに応答する
 終了要求の処理

アプリケーションの起動時にDelegateオブジェクトがすることは設定とウィンドウの提供で、詳細は次の項目で説明しています。また、Delegateでは前回終了したときの状態を復帰し、必要なオブジェクトを生成します。アプリケーションが終了する時もDelegateが終了処理を行い、次回の起動時に必要な情報を記録します。詳細はiPhone OS Programming Guideの"Core Application Architecture"を参照してください、と書いているのでここでそれぞれ対応するメソッドが書かれているのでしょう。

■ Creating the Application Window
UIWindowクラスは一つのウィンドウのみを扱い、ユーザインタフェースを変えるときにはViewを変えまるそうで、言い方を変えるとウィンドウはユーザインタフェースを置く場所を提供し、Viewが中身を提供する、という事だそうです。ViewはUIViewクラスのインスタンスでウィンドウの中身を書き、応答します。iPhoneはテーブル、ボタン、テキスト フィールドなどの標準Viewを提供していますが、UIViewをサブクラスすることで独自のユーザインタフェース部品を作成できます。MoveMeではMoveMeViewとPlacardViewの二つを作成しています。一つはアプリケーションのインタフェース、もう一つはユーザへの応答処理です。

起動時にはウィンドウを表示して内容を表示します。ウィンドウはnibファイルのMainWindow.xibから取り出します。アプリケーションがlauchedの状態になり、イベント処理が始まると、UIApplicationオブジェクトはDelegateにapplicationDidFinishLaunching:メッセージを送ります。メッセージはDelegateがウィンドウの内容描画するきっかけとなり、アプリケーションが必要な他の初期化を行います。

MoveMeでは、DelegateのapplicationDidFinishLaunching:メソッドは以下のことを行います。

1.ウィンドウのView内容を管理するView Controllerオブジェクトを生成
2.MoveMeViewクラスのインスタンスでView Controllerを初期化します。MoveMeViewクラスはnibファイルMoveMeView.xibに入っており、背景のViewとしてウィンドウのフレーム全体を埋めます。
3.ウィンドウのSubviewとしてControllerのViewを追加します。
4.ウィンドウを表示します。

Listing 2はMoveMeのapplicationDidFinishLaunching:メソッドで、MoveMeAppDelegate.mで宣言されています。この中ではウィンドウ内の主なViewを生成し、ウィンドウを表示しています。ウィンドウを表示することにより、システムはイベント処理を開始して良いことを知ります。

applicationDidFinishLaunching:メソッドは他のアプリケーションでも利用されるそうです。ここまでソースコードを見ずにメモをとり続けましたが、applicationDidFinishLaunchingが宣言されているUIApplication.hを見ると他にも色々と関数(メソッド)が並んでいます。

MoveMeViewオブジェクトがnibファイルから取り出されると、MoveMeView.m内のinitWithCoder:メソッドが呼ばれるそうです。このinitWithCoderの詳細は"NSCoding Protocol Reference"に書かれているのでしょう。initWithCoderはMoveMeViewクラスを呼び、さらに同じファイル内のsetUpPlacardViewメソッドがPlacardViewクラスを呼び出して、Welcomeボタンを表示する・・・と言うことだそうです。

Listing 3はMoveMeView.m内のsetUpPlacardViewメソッドです。このViewの初期化部分ではMoveMeView.hで宣言されたPlacardViewオブジェクトが生成されます。MoveMeViewクラスはアプリケーション全体の背景を提供するため、PlacardViewオブジェクトをSubviewとして追加します。二つのViewの関連は、アプリケーションの背景上にWelcomeボタンを表示することと、ボタンに対するイベント処理をMoveMeViewにさせることです。このplacardViewが良くわからなくて、その宣言に@implementation MovideMeViewの直下で@synthesizeというのが使われています。WindowとViewの詳細は"iPhone OS Programming Guide"の"Windows and Views"の項目を見ろと書かれています。

0 件のコメント: