iPhone SDKのサイトを見るとβ8が上がっていました。今試しているAppleのサンプルコードとどの程度互換性があるか気になります。アンインストールの方法は書いてはいるものの、面倒なことに替わりありません(笑)
readmeによると、このベータ8はiPhone 2.0の最終版と互換性があり、App Storeに登録するiPhone OSアプリケーションに使うように書いています。登録するためにはiPhone Developer Programの会員になるように、とも書いています。あとは、例によってインストールとアンインストールの注意書きです。
2008年6月28日土曜日
Creating an iPhone Applicationその3
Creating an iPhone Application
http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action
"Creating an iPhone Applicationその2"のメモの続きです。他のメモと同様に翻訳じゃないのでたくさん抜けていますし、たくさん間違っているハズですが、原文を読むときの参考にはなると思います。
■ Drawing the Welcome Button
UIKitが提供している標準的なViewは単純な内容であれば変更なしに表示できて、イメージならUIImageView、文字列ならUILabelが使えます。アプリケーションMoveMeだと、UIViewオブジェクトのbackgroundColorプロパティで背景色を初期化メソッドで描画しています。backgroundColorプロパティはInterface BuilderでnibファイルMoveMeView.xib内のMoveMeViewを作るときにInspectorウィンドウのAttributeタブで設定しています。複雑な背景が必要なときにはUIKitの棒が機能か、QuartzやOpenGL ESを利用できます。
アプリケーションMoveMeのPlacardViewクラスはWelcomeボタンの描画とスクリーン上の位置管理をします。PlacardViewクラスはすべてのプロセスを紹介するために、あえて前述のUIImageViewやUILabelを使わずに描画しています。描画はPlacardView.mファイル内のdrawRect:メソッドで行われています。
drawRect:メソッドが呼び出された時点で、描画のための環境は利用可能になっていますので、必要な描画命令を発効するだけです。PlacardViewクラスの描画内容はPlacard.pngで描かれたバックグランドとテキストで、テキストは逐次変更することが出来ます・・・とここでPlacard.pngの描画が気になって調べてみると、PlacardView.mファイル内でinitメソッドでPlacard.pngイメージ ファイルを読み込み、placardImageオブジェクトに入れてdrawRect内でdorawATPointメソッドで位置を指定して描画していて、確かに描画の手順が詳しく分かるようになっています・・・解説文に戻ると、処理の手順が示されています。
1.現在のView座標0にボタンの背景イメージを描画しています。この時にViewの大きさはイメージに合うようになっていて、ボタン全体が描画されています。
2.ボタンの中央に来るようにWelcom文字列の位置を計算します。この文字列はさまざまに変わるので、毎回計算しなくてはなりません。
3.描画色を黒に設定します。([[UIColor blackColor] set]のことを言っているのであろうが、この行をコメントアウトしても結果は変わりません。おそらく初期値が黒なのでしょう)
4.文字列をずらせて描画
5.描画色を白に設定します。
4.文字列を描画します。
Listing 4では、placardImageメンバ変数がボタン背景の入ったUIImageオブジェクトを保持し、currentDisplayStringメンバ変数が文字列の入ったNSStringオブジェクトを保持しています。イメージを描画した後で、文字列の位置を計算しtextSizeメンバ変数にいれます。文字列は陰を付けるために黒と白で二回描画されています。描画はNSStringのメソッドで行なわれています。
前述のように複雑な描画をするときにはQuartzかOpenGL ESが利用できますが、QuartzはUIKitと共にベクトル パス、イメージ、PDFなどを描画できます。QuartzとUIKitは同じ描画環境ですので、drawRect:メソッドから呼び出せます。
OpenGL ESは2Dや3Dの描画ができますが、drawRect:メソッドは利用できません。ViewはOpenGL ESの表面描画に利用されます。表面描画に利用するオブジェクトの選択や描画頻度は自由に決められます。
詳細は"iPhone OS Programming Guide"の"Graphics and Drawing"の項目を見ろと書かれています。
■ Handling Touch Events
マルチタッチ インタフェースの処理ですが、とうぜん既存のマウス処理とは異なります。2番目以降の指が触れる度にタッチ イベントが発行されます。また、画面にふれているそれぞれの指が移動しても、指が画面から離れてもタッチ イベントが発行されます。
一本の指で操作後にもう一本の指が追加されることは想定しておらず、この単純化でジェスチャを識別しやすくしています。システムはswipesなどの共通のジェスチャを識別する方法を手今日していますが、独自に複雑なジェスチャ識別をさせることもできます。新しいタッチイベントが生成されたときに、各指がタッチしているか、離れたかなどの情報も提供されます。これにより、新しいタッチイベントが発生する度に、各指の動きを追跡できます。Figure 4に示すようなピンチ クローズやピンチ オープンのジェスチャのイベントが発生すると、Viewがサポートしている拡大縮小としてズームのレベルを変更できます。
システムはUIResponderクラスをインスタンスしたオブジェクトにイベントを配信します。アプリケーションMoveMeでは二つのViewクラスを利用していますが、MoveMeViewクラスがイベントを処理します。このクラスはタップがWelcomeボタンの内側で発生したのか外で発生したのかの識別をUIResponderのメソッドをオーバライドすることで実現しています。
単純にするためにアプリケーションMoveMeでは最初にタッチした指だけを追跡します。UIViewクラスが初期値でマルチタッチ イベントOFFの状態であることを利用しています。マルチタッチ イベントがOFFだと、システムは最初にタッチした指が生成するイベントのみを配信します。マルチタッチのイベントが必要な場合にはUIViewクラスのsetMultipleTouchEnabled:メソッドを利用します。
イベント処理の一貫として、MoveMeViewクラスは以下の手順を踏みます。
1.最初のタッチイベントが届くと、発生した場所を調べます。
・ボタン外でのダブルタップ - 文字列の変更
・ボタン内でのシングルタップ - ボタンの中央を指の下に移動し、ボタンを拡大してアニメーションを初期化
・他のタッチは無視
2.ボタン内をタッチしている指が移動すると、新しい位置にボタンの位置を変更します。
3.ボタン内をタッチしている指が離れるとボタンを中央に戻すアニメーションを始めます。
Listing 5ではMoveMeView.mファイル内のMoveMeView用touchesBegan:withEventメソッドを示しています。touchesBegan:withEventメソッドはUIResponder.hで宣言されています。指が最初にふれるとシステムはこのメソッドを呼び出します。このメソッドはすべてのタッチを取得するので、その中から一つだけを取り出します。UITouchオブジェクトはMoveMeViewオブジェクトとPlacardViewオブジェクトのいずれでタッチイベントが発生したかと、その回数を調べるために使用されます。もし、ボタン外でダブルタッチが発生するとtouchesBegan:withEventメソッドはWelcomeボタンのもじれとを次の文字に入れ替えるためにsetupNextDisplayString:メソッドを呼び出します。また、ボタン内の場合にはボタンを拡大してタッチされた場所を追跡するためにanimateFirstTouchAtPoint:メソッドを呼び出します。他のイベントは無視されます。
Listing 6ではMoveMeViewクラスのtouchesMoved:withEvent:メソッドを示しています。指が触れて移動したときにシステムはこのメソッドを呼び出します。最初に指が触れた場所に関係なくこのメソッドは呼び出されますので、アプリケーションMoveMeではボタン内でイベントが発生しているかを調べ、その場合にはPlacardViewオブジェクトの中心を設定しなおし再描画しています。
Listing 7 ではtouchesEnded:withEvent:メソッドを示しており、指が離れるとシステムはこのメソッドを呼び出します。アプリケーションMoveMeではボタンを画面中央に戻すアニメーションを実行します。
アプリケーションのイベント取扱を簡素化するために、ボタンが元に戻るアニメーション期間中はViewのtouchesEnded:withEvent: メソッドを不可にしています。もし、不可にしないと、各イベント処理メソッドはボタンがアニメーション中であるかと、アニメーションのキャンセルを識別するコードが必要なります・・・などなど説明が書かれています。ボタンが元の位置に戻ると、MoveMeViewクラスのanimationDidStop:finished:メソッドがユーザからの入力を可能にします。
詳細は"iPhone OS Programming Guide"の "Event Handling"の項目を見ろと書いています。
・・・と、このページは意外と長くて、まだまだ続きます(笑)
http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action
"Creating an iPhone Applicationその2"のメモの続きです。他のメモと同様に翻訳じゃないのでたくさん抜けていますし、たくさん間違っているハズですが、原文を読むときの参考にはなると思います。
■ Drawing the Welcome Button
UIKitが提供している標準的なViewは単純な内容であれば変更なしに表示できて、イメージならUIImageView、文字列ならUILabelが使えます。アプリケーションMoveMeだと、UIViewオブジェクトのbackgroundColorプロパティで背景色を初期化メソッドで描画しています。backgroundColorプロパティはInterface BuilderでnibファイルMoveMeView.xib内のMoveMeViewを作るときにInspectorウィンドウのAttributeタブで設定しています。複雑な背景が必要なときにはUIKitの棒が機能か、QuartzやOpenGL ESを利用できます。
アプリケーションMoveMeのPlacardViewクラスはWelcomeボタンの描画とスクリーン上の位置管理をします。PlacardViewクラスはすべてのプロセスを紹介するために、あえて前述のUIImageViewやUILabelを使わずに描画しています。描画はPlacardView.mファイル内のdrawRect:メソッドで行われています。
drawRect:メソッドが呼び出された時点で、描画のための環境は利用可能になっていますので、必要な描画命令を発効するだけです。PlacardViewクラスの描画内容はPlacard.pngで描かれたバックグランドとテキストで、テキストは逐次変更することが出来ます・・・とここでPlacard.pngの描画が気になって調べてみると、PlacardView.mファイル内でinitメソッドでPlacard.pngイメージ ファイルを読み込み、placardImageオブジェクトに入れてdrawRect内でdorawATPointメソッドで位置を指定して描画していて、確かに描画の手順が詳しく分かるようになっています・・・解説文に戻ると、処理の手順が示されています。
1.現在のView座標0にボタンの背景イメージを描画しています。この時にViewの大きさはイメージに合うようになっていて、ボタン全体が描画されています。
2.ボタンの中央に来るようにWelcom文字列の位置を計算します。この文字列はさまざまに変わるので、毎回計算しなくてはなりません。
3.描画色を黒に設定します。([[UIColor blackColor] set]のことを言っているのであろうが、この行をコメントアウトしても結果は変わりません。おそらく初期値が黒なのでしょう)
4.文字列をずらせて描画
5.描画色を白に設定します。
4.文字列を描画します。
Listing 4では、placardImageメンバ変数がボタン背景の入ったUIImageオブジェクトを保持し、currentDisplayStringメンバ変数が文字列の入ったNSStringオブジェクトを保持しています。イメージを描画した後で、文字列の位置を計算しtextSizeメンバ変数にいれます。文字列は陰を付けるために黒と白で二回描画されています。描画はNSStringのメソッドで行なわれています。
前述のように複雑な描画をするときにはQuartzかOpenGL ESが利用できますが、QuartzはUIKitと共にベクトル パス、イメージ、PDFなどを描画できます。QuartzとUIKitは同じ描画環境ですので、drawRect:メソッドから呼び出せます。
OpenGL ESは2Dや3Dの描画ができますが、drawRect:メソッドは利用できません。ViewはOpenGL ESの表面描画に利用されます。表面描画に利用するオブジェクトの選択や描画頻度は自由に決められます。
詳細は"iPhone OS Programming Guide"の"Graphics and Drawing"の項目を見ろと書かれています。
■ Handling Touch Events
マルチタッチ インタフェースの処理ですが、とうぜん既存のマウス処理とは異なります。2番目以降の指が触れる度にタッチ イベントが発行されます。また、画面にふれているそれぞれの指が移動しても、指が画面から離れてもタッチ イベントが発行されます。
一本の指で操作後にもう一本の指が追加されることは想定しておらず、この単純化でジェスチャを識別しやすくしています。システムはswipesなどの共通のジェスチャを識別する方法を手今日していますが、独自に複雑なジェスチャ識別をさせることもできます。新しいタッチイベントが生成されたときに、各指がタッチしているか、離れたかなどの情報も提供されます。これにより、新しいタッチイベントが発生する度に、各指の動きを追跡できます。Figure 4に示すようなピンチ クローズやピンチ オープンのジェスチャのイベントが発生すると、Viewがサポートしている拡大縮小としてズームのレベルを変更できます。
システムはUIResponderクラスをインスタンスしたオブジェクトにイベントを配信します。アプリケーションMoveMeでは二つのViewクラスを利用していますが、MoveMeViewクラスがイベントを処理します。このクラスはタップがWelcomeボタンの内側で発生したのか外で発生したのかの識別をUIResponderのメソッドをオーバライドすることで実現しています。
単純にするためにアプリケーションMoveMeでは最初にタッチした指だけを追跡します。UIViewクラスが初期値でマルチタッチ イベントOFFの状態であることを利用しています。マルチタッチ イベントがOFFだと、システムは最初にタッチした指が生成するイベントのみを配信します。マルチタッチのイベントが必要な場合にはUIViewクラスのsetMultipleTouchEnabled:メソッドを利用します。
イベント処理の一貫として、MoveMeViewクラスは以下の手順を踏みます。
1.最初のタッチイベントが届くと、発生した場所を調べます。
・ボタン外でのダブルタップ - 文字列の変更
・ボタン内でのシングルタップ - ボタンの中央を指の下に移動し、ボタンを拡大してアニメーションを初期化
・他のタッチは無視
2.ボタン内をタッチしている指が移動すると、新しい位置にボタンの位置を変更します。
3.ボタン内をタッチしている指が離れるとボタンを中央に戻すアニメーションを始めます。
Listing 5ではMoveMeView.mファイル内のMoveMeView用touchesBegan:withEventメソッドを示しています。touchesBegan:withEventメソッドはUIResponder.hで宣言されています。指が最初にふれるとシステムはこのメソッドを呼び出します。このメソッドはすべてのタッチを取得するので、その中から一つだけを取り出します。UITouchオブジェクトはMoveMeViewオブジェクトとPlacardViewオブジェクトのいずれでタッチイベントが発生したかと、その回数を調べるために使用されます。もし、ボタン外でダブルタッチが発生するとtouchesBegan:withEventメソッドはWelcomeボタンのもじれとを次の文字に入れ替えるためにsetupNextDisplayString:メソッドを呼び出します。また、ボタン内の場合にはボタンを拡大してタッチされた場所を追跡するためにanimateFirstTouchAtPoint:メソッドを呼び出します。他のイベントは無視されます。
Listing 6ではMoveMeViewクラスのtouchesMoved:withEvent:メソッドを示しています。指が触れて移動したときにシステムはこのメソッドを呼び出します。最初に指が触れた場所に関係なくこのメソッドは呼び出されますので、アプリケーションMoveMeではボタン内でイベントが発生しているかを調べ、その場合にはPlacardViewオブジェクトの中心を設定しなおし再描画しています。
Listing 7 ではtouchesEnded:withEvent:メソッドを示しており、指が離れるとシステムはこのメソッドを呼び出します。アプリケーションMoveMeではボタンを画面中央に戻すアニメーションを実行します。
アプリケーションのイベント取扱を簡素化するために、ボタンが元に戻るアニメーション期間中はViewのtouchesEnded:withEvent: メソッドを不可にしています。もし、不可にしないと、各イベント処理メソッドはボタンがアニメーション中であるかと、アニメーションのキャンセルを識別するコードが必要なります・・・などなど説明が書かれています。ボタンが元の位置に戻ると、MoveMeViewクラスのanimationDidStop:finished:メソッドがユーザからの入力を可能にします。
詳細は"iPhone OS Programming Guide"の "Event Handling"の項目を見ろと書いています。
・・・と、このページは意外と長くて、まだまだ続きます(笑)
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"の項目を見ろと書かれています。
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"の項目を見ろと書かれています。
2008年6月25日水曜日
Creating an iPhone Applicationその1
Creating an iPhone Application
http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action
上記資料のメモです。翻訳じゃないのでたくさん抜けています。
この資料はサンプルコード"MoveMe"を元に基本的なiPhoneのプログラミングを解説しています。面白いことにiPhone Dev Centerのトップにはこのサンプルコードへのアンカーがありません。試した限りではSDK beta 7で修正なしでコンパイルし実行できました(笑)ただ、ReadMe.txtをみるとバージョンアップを重ねていて、私が試したのは2008/06/02付けのバージョン2.5です。
このサンプルでは以下のiPhoneとして典型的な処理を含んでいるそうです。
アプリケーション初期化
ウィンドウ表示
内容描画
タッチ イベント処理
アニメーション実行
Figure 1が実行結果で"Welcome"ボタンを押すとボタンのサイズが大きくなり、押したまま指を動かすとボタンが指の動きについて来るというものです。また、ボタン以外の場所をダブルタップすると"Welcome"が日本語も含む各国の言葉に変わります。
Figure 1
http://devimages.apple.com/iphone/gettingstarted/docs/images/MoveMe.jpg
ここで、予め読んでいた方がよい資料を三つ上げています。
以下の三つの項目はXcodeを知らない人向けです。
■ Examining the MoveMe Sample Project
■ Building the MoveMe Application
■ A Word About Memory Management
なお、私が試した環境ではActive SDKメニューは表示されておらず、ツールバーのカスタマイズの中に入ったままでした。ただ、ボタンが並びすぎるのは好みではないので、メニューで確認しました。
メモリに制限のある環境での開発経験がない人は、メモリ管理の後半部分は目を通した方がよいかもしれません。
■ Initializing the MoveMe Application
この部分はMac OS Xと関数名などが多少異なっているが基本的に同じです。
http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action
上記資料のメモです。翻訳じゃないのでたくさん抜けています。
この資料はサンプルコード"MoveMe"を元に基本的なiPhoneのプログラミングを解説しています。面白いことにiPhone Dev Centerのトップにはこのサンプルコードへのアンカーがありません。試した限りではSDK beta 7で修正なしでコンパイルし実行できました(笑)ただ、ReadMe.txtをみるとバージョンアップを重ねていて、私が試したのは2008/06/02付けのバージョン2.5です。
このサンプルでは以下のiPhoneとして典型的な処理を含んでいるそうです。
アプリケーション初期化
ウィンドウ表示
内容描画
タッチ イベント処理
アニメーション実行
Figure 1が実行結果で"Welcome"ボタンを押すとボタンのサイズが大きくなり、押したまま指を動かすとボタンが指の動きについて来るというものです。また、ボタン以外の場所をダブルタップすると"Welcome"が日本語も含む各国の言葉に変わります。
Figure 1
http://devimages.apple.com/iphone/gettingstarted/docs/images/MoveMe.jpg
ここで、予め読んでいた方がよい資料を三つ上げています。
以下の三つの項目はXcodeを知らない人向けです。
■ Examining the MoveMe Sample Project
■ Building the MoveMe Application
■ A Word About Memory Management
なお、私が試した環境ではActive SDKメニューは表示されておらず、ツールバーのカスタマイズの中に入ったままでした。ただ、ボタンが並びすぎるのは好みではないので、メニューで確認しました。
メモリに制限のある環境での開発経験がない人は、メモリ管理の後半部分は目を通した方がよいかもしれません。
■ Initializing the MoveMe Application
この部分はMac OS Xと関数名などが多少異なっているが基本的に同じです。
iPhoneのヘルプファイル
以下のサイトはiPhoneのヘルプファイルですが、iPhoneにあわせたHTMLのサンプルとして便利そうです。
iPhone User Guide
http://help.apple.com/iphone/guide/
ソースコードを見ると、index.cssにDashcodeを使って書いたとあります。Dashcodeをちらりと見ただけで試していませんが、iPhone用のHTML作成ツールとして勉強する価値がありそうです。
iPhone User Guide
http://help.apple.com/iphone/guide/
ソースコードを見ると、index.cssにDashcodeを使って書いたとあります。Dashcodeをちらりと見ただけで試していませんが、iPhone用のHTML作成ツールとして勉強する価値がありそうです。
2008年6月24日火曜日
Tools for iPhone OS Development and ...
Tools for iPhone OS Development
http://developer.apple.com/iphone/gettingstarted/docs/iphonedevtools.action
Learning Objective-C: A Primer
http://developer.apple.com/iphone/gettingstarted/docs/objectivecprimer.action
この資料に限らず、HTMLの資料は動画の説明とほぼ同じ内容か、拡張した内容のようです。ビデオでうまく理解できなかった内容を確認するには良さそうです。
http://developer.apple.com/iphone/gettingstarted/docs/iphonedevtools.action
Learning Objective-C: A Primer
http://developer.apple.com/iphone/gettingstarted/docs/objectivecprimer.action
この資料に限らず、HTMLの資料は動画の説明とほぼ同じ内容か、拡張した内容のようです。ビデオでうまく理解できなかった内容を確認するには良さそうです。
iPhone OS Overview
iPhone OS Overview
http://developer.apple.com/iphone/gettingstarted/docs/iphoneosoverview.action
iPhoneの一番下にあるCore OSはMac OS Xと同じMachカーネルを元にしているとしていますが、Mac OS XのDarwinカーネルのようなMachカーネルとI/O Kitの組み合わせ、とは書いていません(笑)
Core OSとCore Servicesが提供するインタフェースはC言語ベースで以下のようなものが含まれています。
Core Foundation
CFNetwork
SQLite
access to POSIX threads
UNIX sockets
上位のレイヤではC言語とObjective-Cベースで、メディア レイヤを例にするとC言語ベースのOpenGL ES、Quartz、Core Audio、Objective-CベースのCore Animationが含まれています。
Cocoa TouchレイヤではほとんどがObjective-Cベースです。Foundationフレームワークはファイル管理やネットワークなどを提供し、UIKitフレームワークはWindows、View、Controlそして、各オブジェクトを管理するcontrollerなどを提供しているそうです。
システムが起動できるアプリケーションの数は一度に一つだけで、アプリケーションは画面などハードウェアを占有できます。また、iPhoneのViewやControlはMac OS Xとは違いがあるので注意が必要だと書いています。
iPhone OSのイベント処理もタッチパネルなど今までと異なるので既存のOSとは異なり、今までのアプリケーション開発とは別のものとして考察する事になるそうです。
開発の手始めはFoundationとUIKitのフレームワークで、資料を読み始めるように書いています。
Foundation Framework Reference
http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/ObjC_classic/index.html
UIKit Framework Reference
http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIKit_Framework/index.html
iPhone OS Programming Guide: Introduction
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/chapter_1_section_1.html
http://developer.apple.com/iphone/gettingstarted/docs/iphoneosoverview.action
iPhoneの一番下にあるCore OSはMac OS Xと同じMachカーネルを元にしているとしていますが、Mac OS XのDarwinカーネルのようなMachカーネルとI/O Kitの組み合わせ、とは書いていません(笑)
Core OSとCore Servicesが提供するインタフェースはC言語ベースで以下のようなものが含まれています。
Core Foundation
CFNetwork
SQLite
access to POSIX threads
UNIX sockets
上位のレイヤではC言語とObjective-Cベースで、メディア レイヤを例にするとC言語ベースのOpenGL ES、Quartz、Core Audio、Objective-CベースのCore Animationが含まれています。
Cocoa TouchレイヤではほとんどがObjective-Cベースです。Foundationフレームワークはファイル管理やネットワークなどを提供し、UIKitフレームワークはWindows、View、Controlそして、各オブジェクトを管理するcontrollerなどを提供しているそうです。
システムが起動できるアプリケーションの数は一度に一つだけで、アプリケーションは画面などハードウェアを占有できます。また、iPhoneのViewやControlはMac OS Xとは違いがあるので注意が必要だと書いています。
iPhone OSのイベント処理もタッチパネルなど今までと異なるので既存のOSとは異なり、今までのアプリケーション開発とは別のものとして考察する事になるそうです。
開発の手始めはFoundationとUIKitのフレームワークで、資料を読み始めるように書いています。
Foundation Framework Reference
http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/ObjC_classic/index.html
UIKit Framework Reference
http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIKit_Framework/index.html
iPhone OS Programming Guide: Introduction
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/chapter_1_section_1.html
2008年6月18日水曜日
iPhone SDK β7
iPhone SDKのサイトを見るとβ7が上がっていました。以前は新しい版がアップされるとメールで案内が来ていましたが、最近は来なくなりました。iphone_sdk__9m2199__wwdc08.dmgというファイル名から推測するとWWDC 2008で配布されたものと思われます。
この版からiPhone用のプロジェクト テンプレートの数が6つになり、Cocoa Touchという名前が消えました。どういう訳か資料からもCocoa Touchという名前が消えているようです。
以前から思っているのですが「新規プロジェクト」の画面左側はiPhone OSとMac OS Xの二つに分類されているですが、各項目がネストしていないうえに、iPhone OSには項目が一つしかないので分かりにくいです。
この版からiPhone用のプロジェクト テンプレートの数が6つになり、Cocoa Touchという名前が消えました。どういう訳か資料からもCocoa Touchという名前が消えているようです。
以前から思っているのですが「新規プロジェクト」の画面左側はiPhone OSとMac OS Xの二つに分類されているですが、各項目がネストしていないうえに、iPhone OSには項目が一つしかないので分かりにくいです。
2008年6月14日土曜日
2008年6月13日金曜日
1-10 iPhone SDK for Web Developers.m4v
ビデオのメモ
Web技術
Java script
getElementsBy_Class_Name_
エレメントのアレイを返す
var myDivs = document.get getElementsBy_Class_Name_("myDivClass")
Selectors API
CSSのセレクタを得る
var fooOrBar = document.querySelector("#foo, #bar"); // 次のセレクタ
var warnings = document.querySelectorAll("p.warning") // 全てのセレクタ
Native SVG ベクトル画
Scalable Vector Graphics 1.1
<img src="asf-logo.svg" style="height:90%;width:90%;">
background-image: url("asf-log.svg")
CSS Effect アニメーション
変形(回転など)
-webkit-transform : trasform_function
-webkit-transform-origin : 3dpoint trasform_function
skew(angle)ひねり
scale(number)拡大縮小
rotate(angle)回転
translate(number)移動
移動
-webkit-transition-property : opacity; //透明などのスタイル
-webkit-transition-duration : 2s; // 2秒で移動
-webkit-transition-timing-function : linear; // 移動速度
-myyElement.style.opacity = "10%"; // 最終の透明度
アニメーション CSS Animation
-animation-name : 'bounce'; // キーフレーム名の指定
キーフレームの例
@keyframes 'bounce' {
0 { top: 100px; }
25% { top: 150px; }
50% { top: 200px; }
75% { top: 150px; }
100% { top: 100px; }
-animation-duration : '2s'; // アニメーションの時間
-animation-iteration-count : 1; // 繰り返し回数
アニメーションはハードウェアで実行
offline Data クライアント側のデータベースAPI
HTML 5規格
JavaScript API
openDatabase
myDB = openDatabase("noteDB", "1.0", "My Database", 200000);
データベース名、バージョン、概要、サイズ
executeSQL
myDB.executeSql("INSERT INTO NoteTable (id, note,) VALUES ( ?, ?)", [note.id, note.text]);
SQL syntaxが使える
Transactionをサポート
セキュア 同じドメインのみアクセス
フル スクリーン モード
SafariのURL欄とToolbarを表示せずにWebサイトを表示できる
Homeスクリーン アイコンが必要
apple-touch-icon.png または
<link rel="apple-touch-icon" href="/customIcon.png"/>
メタタグも必要
<meta name="apple-touch-fullscreen" content="YES" />
ジェスチャ イベント
JavaScriptのハンドラ
gesturestart
gesturechange
gestureend
回転、拡大縮小ができる
<div ongesturestart="handleGesture()"> </dive>
mouseEventsの代用
ツール
iPhone Simulator
Dashcode
Web技術
Java script
getElementsBy_Class_Name_
エレメントのアレイを返す
var myDivs = document.get getElementsBy_Class_Name_("myDivClass")
Selectors API
CSSのセレクタを得る
var fooOrBar = document.querySelector("#foo, #bar"); // 次のセレクタ
var warnings = document.querySelectorAll("p.warning") // 全てのセレクタ
Native SVG ベクトル画
Scalable Vector Graphics 1.1
<img src="asf-logo.svg" style="height:90%;width:90%;">
background-image: url("asf-log.svg")
CSS Effect アニメーション
変形(回転など)
-webkit-transform : trasform_function
-webkit-transform-origin : 3dpoint trasform_function
skew(angle)ひねり
scale(number)拡大縮小
rotate(angle)回転
translate(number)移動
移動
-webkit-transition-property : opacity; //透明などのスタイル
-webkit-transition-duration : 2s; // 2秒で移動
-webkit-transition-timing-function : linear; // 移動速度
-myyElement.style.opacity = "10%"; // 最終の透明度
アニメーション CSS Animation
-animation-name : 'bounce'; // キーフレーム名の指定
キーフレームの例
@keyframes 'bounce' {
0 { top: 100px; }
25% { top: 150px; }
50% { top: 200px; }
75% { top: 150px; }
100% { top: 100px; }
-animation-duration : '2s'; // アニメーションの時間
-animation-iteration-count : 1; // 繰り返し回数
アニメーションはハードウェアで実行
offline Data クライアント側のデータベースAPI
HTML 5規格
JavaScript API
openDatabase
myDB = openDatabase("noteDB", "1.0", "My Database", 200000);
データベース名、バージョン、概要、サイズ
executeSQL
myDB.executeSql("INSERT INTO NoteTable (id, note,) VALUES ( ?, ?)", [note.id, note.text]);
SQL syntaxが使える
Transactionをサポート
セキュア 同じドメインのみアクセス
フル スクリーン モード
SafariのURL欄とToolbarを表示せずにWebサイトを表示できる
Homeスクリーン アイコンが必要
apple-touch-icon.png または
<link rel="apple-touch-icon" href="/customIcon.png"/>
メタタグも必要
<meta name="apple-touch-fullscreen" content="YES" />
ジェスチャ イベント
JavaScriptのハンドラ
gesturestart
gesturechange
gestureend
回転、拡大縮小ができる
<div ongesturestart="handleGesture()"> </dive>
mouseEventsの代用
ツール
iPhone Simulator
Dashcode
1-09 Leveraging iPhone Location, Acceleration, Orientation, and System Information.m4v
ビデオのメモ
静的情報
システムの情報
System name
System version
Model name
iPhone
iPod touch
User Name
SettingとiTunesで表示されている内容
取得方法
出力結果
"Vicki's Music is an iPod touch running version 1.3"
Unique IDが聞き事に提供されている
オリエンテーション
縦上、縦下、右横、左横、下向き、上向き、不明を知ることができる
情報はPropertyやNotification設定で入手
UIDevice.hで宣言
動的情報
位置情報
緯度 経度 高度 計測時そして前回の計測時が提供
CLLocationManager
消費電力に注意
加速度センサ情報
ゲームだけでなくユーザインタフェースとしても有用
iPhoneを縦に置いて
X方向 水平 右が+
Y方向 垂直 上が+
Z方向 前後 前が+
UIAccelerometer 一定時間ごとに情報を入手
UIAcceleration 呼び出したときのみ
消費電力に注意
静的情報
システムの情報
System name
System version
Model name
iPhone
iPod touch
User Name
SettingとiTunesで表示されている内容
取得方法
UIDevice * myCurrentDevice = [UIDevice currentDevice];
NS Log (@"%@ is an %@ running %@", [myCurrentDevice neme],
[myCurrentDevice model],
[myCurrentDevice systemVersion[);
出力結果
"Vicki's Music is an iPod touch running version 1.3"
Unique IDが聞き事に提供されている
オリエンテーション
縦上、縦下、右横、左横、下向き、上向き、不明を知ることができる
情報はPropertyやNotification設定で入手
UIDevice.hで宣言
動的情報
位置情報
緯度 経度 高度 計測時そして前回の計測時が提供
CLLocationManager
消費電力に注意
加速度センサ情報
ゲームだけでなくユーザインタフェースとしても有用
iPhoneを縦に置いて
X方向 水平 右が+
Y方向 垂直 上が+
Z方向 前後 前が+
UIAccelerometer 一定時間ごとに情報を入手
UIAcceleration 呼び出したときのみ
消費電力に注意
1-08 Key Practices for iPhone Application Development.m4v
ビデオのメモ
1.iPhone用に設計
設計の善し悪しがパフォーマンスに影響
使い方の違いを考慮
小さな画面サイズ
アプリケーションは一つだけ起動
2.メモリ保護
スワップ ファイルはない
メモリスペースが無くなると再起動
害像ファイルフォーマットはPNG
Plistはバイナリに変換
バイナリはThumb命令セット
ARM 16 bit命令のサブセット
メモリ リークをなくす
Instrumentsを使って確認
不要メモリは即座に解放
アロケート プールの使用
独自でメモリスワップのファイルを作成する
データのロードを最小限にする。
一画面に表示しきれない情報は小分けにしてロード
メモリ残警告は以下の三通りで、UIKit経由
application delegate経由
applicationDidReceiveMemoryWarning;
UIViewControllerのサブクラス時
didReceiveMemoryWarning
ノティフィケイション経由
UIApplicationDidReceiveMemoryWarningNotification
メモリ残警告の処理
off-screen viewを解放
キャッシュをパージ
イメージデータのキャッシュ削除
3.応答性
起動を速くすることが重要
終了時に現状を記録し、次回起動時に戻す
20秒以内に応答、起動、終了
4.省エネ
データの送受信は電力消耗が大きい
ネットワークのポーリングをさける
ロケーション サービスの起動と終了を明示
5.保安
全アプリケーションはサンドボックス内にある
自身のファイルとプレファレンスのみ使用可
システム リソースの使用制限
Keychainなどのサービスが利用可
1.iPhone用に設計
設計の善し悪しがパフォーマンスに影響
使い方の違いを考慮
小さな画面サイズ
アプリケーションは一つだけ起動
2.メモリ保護
スワップ ファイルはない
メモリスペースが無くなると再起動
害像ファイルフォーマットはPNG
Plistはバイナリに変換
バイナリはThumb命令セット
ARM 16 bit命令のサブセット
メモリ リークをなくす
Instrumentsを使って確認
不要メモリは即座に解放
アロケート プールの使用
- (NSString *) modifyMyString:(NSString *(myString {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
/* メモリをアロケートする*/
[pool release];
}
独自でメモリスワップのファイルを作成する
データのロードを最小限にする。
一画面に表示しきれない情報は小分けにしてロード
メモリ残警告は以下の三通りで、UIKit経由
application delegate経由
applicationDidReceiveMemoryWarning;
UIViewControllerのサブクラス時
didReceiveMemoryWarning
ノティフィケイション経由
UIApplicationDidReceiveMemoryWarningNotification
メモリ残警告の処理
off-screen viewを解放
キャッシュをパージ
イメージデータのキャッシュ削除
3.応答性
起動を速くすることが重要
終了時に現状を記録し、次回起動時に戻す
20秒以内に応答、起動、終了
4.省エネ
データの送受信は電力消耗が大きい
ネットワークのポーリングをさける
ロケーション サービスの起動と終了を明示
5.保安
全アプリケーションはサンドボックス内にある
自身のファイルとプレファレンスのみ使用可
システム リソースの使用制限
Keychainなどのサービスが利用可
1-07 User Interface Design for iPhone Application.m4v
ビデオのメモ
iPhone用アプリケーションを考える前に読む注意書きで、プログラマだけでなくマーケティングも見ると良いと思います。
■ iPhoneの特性
今までと全く異なる
マウスとタップは異なる
テキスト入力を最小限に
表示するものを厳選(小型スクリーン)
480 x 320の 有効利用
マルチタスクでない
機能ではなく結果を提供
モバイルであるため、何度も短い時間利用されることを意識したデザインが必要である。
■ 必須の機能のみ
Mac OS XのiPhotoとiPhoneのPhotoを比較して解説しています。同様にそれぞれのMailを比較しています。
■ 使いやすさの設計
仕事の流れを考慮します。データ表示は概要から詳細に移るように設計します。面白いことにiPhoneのNSTableViewは縦一列だけです。これは小さな画面で分かりやすく処理させるためで、画面を切り替えて次の一列を表示させることで、複数列の問題を処理しています。
指でタップできる大きさにします。ボタンのサイズは44 pointの四角が最小サイズだそうです。
デザイナが使いたがりそうな、ズームやパンは最小限にするように言っています。見る時間が短時間であるため時間のロスは良くない、と言うことのようです。
ボタンなど組込済みのコントロールを利用することで、見た目の一貫性を持たせるように言っています。コントロールは以下のようなものがあります。
Tool bar
Navigation bar
Table view
Segmented control
Page indicator
Picker
Activity indicator
Slider
Button
Switch
>と丸で囲まれた>の意味は異なるそうです。
>のみは・・・
さらにデータがさらにあり、
欄全体がボタンになっていて、
押すと次のページに移ります。
丸で囲まれた>は・・・
>のみがボタンになっていて、
押すと詳細が表形式で表示されます。
色遣いにも注意が必要です。
■ 驚きと喜びを
まあ、これはiPhoneをみれば、わかるでしょう(笑)
Macintosh、Mac OS Xと同様に、iPhoneにもiPhone Human Interface Guidelinesがあるそうです。
iPhone用アプリケーションを考える前に読む注意書きで、プログラマだけでなくマーケティングも見ると良いと思います。
■ iPhoneの特性
今までと全く異なる
マウスとタップは異なる
テキスト入力を最小限に
表示するものを厳選(小型スクリーン)
480 x 320の 有効利用
マルチタスクでない
iPhoneはシングルタスクで、ユーザが作業中に他のアプリケーションを立ち上げると、その時のアプリケーションは終了し、それまでのデータは失われてしまう。次回に起動したときに同じ状態にしたい場合には、終了時の状態を保存する機構が必要である・・・
・・・と、ここまでは分かったですが、そのためのAPIはどの程度まで提供されているのかは説明されていません。例えば、実メモリの状態をそのままスワップアウトするような機能はあると便利です。
機能ではなく結果を提供
モバイルであるため、何度も短い時間利用されることを意識したデザインが必要である。
■ 必須の機能のみ
Mac OS XのiPhotoとiPhoneのPhotoを比較して解説しています。同様にそれぞれのMailを比較しています。
■ 使いやすさの設計
仕事の流れを考慮します。データ表示は概要から詳細に移るように設計します。面白いことにiPhoneのNSTableViewは縦一列だけです。これは小さな画面で分かりやすく処理させるためで、画面を切り替えて次の一列を表示させることで、複数列の問題を処理しています。
指でタップできる大きさにします。ボタンのサイズは44 pointの四角が最小サイズだそうです。
デザイナが使いたがりそうな、ズームやパンは最小限にするように言っています。見る時間が短時間であるため時間のロスは良くない、と言うことのようです。
情報の入力は最小限にしろと言っています。これはメモ代わりという私の使用目的には合いません。しかし、録音はできたはずなので全く使えないというわけではありません。この意味では文字入力も図を描くことも、録音も写真もできるSony Clieの方が有効です。
■ 一貫性の確保ボタンなど組込済みのコントロールを利用することで、見た目の一貫性を持たせるように言っています。コントロールは以下のようなものがあります。
Tool bar
Navigation bar
Table view
Segmented control
Page indicator
Picker
Activity indicator
Slider
Button
Switch
>と丸で囲まれた>の意味は異なるそうです。
>のみは・・・
さらにデータがさらにあり、
欄全体がボタンになっていて、
押すと次のページに移ります。
丸で囲まれた>は・・・
>のみがボタンになっていて、
押すと詳細が表形式で表示されます。
色遣いにも注意が必要です。
■ 驚きと喜びを
まあ、これはiPhoneをみれば、わかるでしょう(笑)
Macintosh、Mac OS Xと同様に、iPhoneにもiPhone Human Interface Guidelinesがあるそうです。
1-06 Using iPhone Features in Your Application.m4v
ビデオのメモ
iPhoneのアプリケーションはアドレス帳や写真からデータにアクセスできます。また、Webの内容をアプリケーション内に埋め込むこともできます。
アドレス帳のアクセス方法
既存のデータ利用
ABPeoplePickerNavigationController
ABPersonViewController
データ生成
ABNewPersonViewController
未処理データの扱い
ABUnknownPersonViewController
データの読み書き
ABAddressBookCopyPeopleWithName
ABPersonCopyImageData
ABPersonCreate
ABRecordSetValue
注意事項
CFRetaiとCFReleaseを使用すること
CopyとCreateを使用したときは必ず解放すること
Getは自身でメモリを確保していないらしく、解放する必要がないらしい
写真のアクセス方法
iPhoneやiPod touchの写真ライブラリから写真を表示する方法// 写真ライブラリが空でないことを確認
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypePhotoLibrary]) {
UIImagePickerController *picker;
picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsImageEditing = YES;
picker.delegate = self;
[currentViewController presentModalViewController:picker animated:YES];
}
カメラは上記のソースを少し変更するだけで利用できます。
// 写真ライブラリが空でないことを確認
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera]) { // Cameraになっています
UIImagePickerController *picker;
picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera; // Cameraになっています
picker.allowsImageEditing = YES;
picker.delegate = self;
[currentViewController presentModalViewController:picker animated:YES];
}
写真の編集
元になる関数は以下の通りです。
- (void) imagePickerController:(UIImagePickerController *) picker
didFinishPickingImage:(UIImage *) imagePickerController
editingInfo:(NSDictionary *) editingInfo {
// 必要に応じてイメージを処理
[self saveImage;image];
}
didFinishPickingImage:(UIImage *) image
editingInfo:(NSDictionary *)editingInfo{
// 元のイメージを入手
UIImage *origialImage = [editingInfo
valueForKey:UIImagePickerControllerOriginalImage];
// メタデータとして保存
[self saveTagZone:[editingInfo
valueForKey:UIImagePickerControllerCropRect]];
}
CGRect rect = [[UIScreen mainScreen] appicationFrame];
UIWebView *webView = [[UIWebView alloc] initWithFrame:rect];
// 電話番号の検出機能を切る
webView.detectsPhoneNumbers = NO;
// Web viewにURLをロード
NSURL url = [NSURL URLWithString:@"http://foo.com"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[webView loadRequest:req];
NSURL *url = [NSURL URLWithString:@"http://apple.com"];
[[UIApplication sharedApplication] openURL:url];
URLに応じて以下のアプリケーションを開くことができると言っています。
Safari:http://, https://, feed://
Mail;mailto:
Google Map:http://maps.google.com/
You Tube:http://www.youtube.com/
iTunes:itms://
独自アプリケーション:myapp://
独自アプリケーションをURLで起動できるようにするにはinfo.plistに以下の項目を追加します。
CFBundleURLType Array
0 Dictionary
CFBundleURLName String My Custom URL
CFBundleURLSchemes Array
0 String myapp
LSIsAppleDeaultForScheme Boolean Yes
- (BOOL)application:(UIApplication *) application
handleOpenURL:(NSURL *) uel {
// 送られてきた問い合わせの文字列を入手
NSString *queryString = [url query];
// 送られてきた文字列から情報を取得...
//キーと値を処理 ...
}
iPhoneのアプリケーションはアドレス帳や写真からデータにアクセスできます。また、Webの内容をアプリケーション内に埋め込むこともできます。
アドレス帳のアクセス方法
既存のデータ利用
ABPeoplePickerNavigationController
ABPersonViewController
データ生成
ABNewPersonViewController
未処理データの扱い
ABUnknownPersonViewController
データの読み書き
ABAddressBookCopyPeopleWithName
ABPersonCopyImageData
ABPersonCreate
ABRecordSetValue
注意事項
CFRetaiとCFReleaseを使用すること
CopyとCreateを使用したときは必ず解放すること
Getは自身でメモリを確保していないらしく、解放する必要がないらしい
写真のアクセス方法
iPhoneやiPod touchの写真ライブラリから写真を表示する方法// 写真ライブラリが空でないことを確認
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypePhotoLibrary]) {
UIImagePickerController *picker;
picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsImageEditing = YES;
picker.delegate = self;
[currentViewController presentModalViewController:picker animated:YES];
}
カメラは上記のソースを少し変更するだけで利用できます。
// 写真ライブラリが空でないことを確認
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera]) { // Cameraになっています
UIImagePickerController *picker;
picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera; // Cameraになっています
picker.allowsImageEditing = YES;
picker.delegate = self;
[currentViewController presentModalViewController:picker animated:YES];
}
写真の編集
元になる関数は以下の通りです。
- (void) imagePickerController:(UIImagePickerController *) picker
didFinishPickingImage:(UIImage *) imagePickerController
editingInfo:(NSDictionary *) editingInfo {
// 必要に応じてイメージを処理
[self saveImage;image];
}
例です。
- (void) imagePickerController:(UIImagePickerController *) pickerdidFinishPickingImage:(UIImage *) image
editingInfo:(NSDictionary *)editingInfo{
// 元のイメージを入手
UIImage *origialImage = [editingInfo
valueForKey:UIImagePickerControllerOriginalImage];
// メタデータとして保存
[self saveTagZone:[editingInfo
valueForKey:UIImagePickerControllerCropRect]];
}
Webの内容を入手
// Web viewを生成CGRect rect = [[UIScreen mainScreen] appicationFrame];
UIWebView *webView = [[UIWebView alloc] initWithFrame:rect];
// 電話番号の検出機能を切る
webView.detectsPhoneNumbers = NO;
// Web viewにURLをロード
NSURL url = [NSURL URLWithString:@"http://foo.com"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[webView loadRequest:req];
以下の方法でURLを開く感覚で他のアプリケーションを開くこともできると言っています。
NSURL *url = [NSURL URLWithString:@"http://apple.com"];
[[UIApplication sharedApplication] openURL:url];
URLに応じて以下のアプリケーションを開くことができると言っています。
Safari:http://, https://, feed://
Mail;mailto:
Google Map:http://maps.google.com/
You Tube:http://www.youtube.com/
iTunes:itms://
独自アプリケーション:myapp://
独自アプリケーションをURLで起動できるようにするにはinfo.plistに以下の項目を追加します。
CFBundleURLType Array
0 Dictionary
CFBundleURLName String My Custom URL
CFBundleURLSchemes Array
0 String myapp
LSIsAppleDeaultForScheme Boolean Yes
- (BOOL)application:(UIApplication *) application
handleOpenURL:(NSURL *) uel {
// 送られてきた問い合わせの文字列を入手
NSString *queryString = [url query];
// 送られてきた文字列から情報を取得...
//キーと値を処理 ...
}
他のiPhoneとの通信
Bonjourを使用して通信できるとしていますが、消費電力が増大し電池使用時間が短くなる、とも言っています。
1-05 iPhone Graphics and Media Overview.m4v
ビデオのメモ
グラフィック関連ではUIKit Graphics、Quartz 2D、Core Animation、OpenGL ES、Media Player、Core Audioの6つを利用できます。
UIKitのGraphicsは画面切り替えなどのアニメーションも含む2Dのユーザインタフェースを作り、Quartz 2Dは低レベルの2D描画、Core Animationはアプリケーションなどのアニメーション、OpenGL ESはゲーム用、Media Playerは動画再生、Core AudoとOpen ALは音声と役割を担っています。
UIKit Graphicsの主なClassは以下の通りです。
UIImage - イメージデータのクラス
UIImageView - インタフェースにイメージをいれたり、スライドショーのイメージを入れる
UIColor - 装置の色関連
UIFont、UILabel - 文字処理関連
UIScreen - スクリーン関連
他にユーティリティ関数がある。
低レベルのグラフィック処理を担当するQuartz 2Dでは、点や線、曲線、四角などはCGPathRefで扱い、四角の塗りつぶしはCGGradientRef、CGImageRefはPNGを中心にしてTIFF、JPEG、GIF、BMP、ICO、CUR、XBMを扱い、CGPDFDocumentRefはPDFを扱っています。
Core Graphicsで緑の枠に青い四角を描く描画サンプルです。
- (void) drawRect:(CGRect)rect
{
CGContextRef myContext = UICurrentContext();
CGRect ourRect = CGRectMake(40, 40, 240, 120);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
CGContextFillRect(context, ourRect);
CGContextSetRGBStrokeColor(context, 0.0, 1.0, 0.0, 1.0);
CGContextStrokeRectWithWidth(context, ourRect, 10);
}
Core Animationはユーザインタフェースのアニメーションを提供しています。レイヤをサポートしており、一つのレイヤに写真を置き、その上に文字のレイヤを置き、さらに絵のレイヤを置くことができます。また、レイヤを半透明にしたり、フェイドインアウトでレイヤを入れ替えることもできます。
Core AnimationのレイヤではCALayerが主のクラスとなり、CAEAGLLayre、CATiledLayer、CAScrollLayerがあります。また、アニメーションのクラスではCAAnimationが主のクラスとなり、CAPropertyAnimation、CABasicAnimation、CAKeyframeAnimationがあります。CAAnimationの下にはCAPropertyAnimationの他に、CATransitionとCAAnimationGroupがあります。
OpenGL ESはOpenGLの機能制限版でiPhoneで採用しているのはバージョン1.1です。詳細は以下のURLを参照してください。
http://www.khronos.org/opengles/
Media Player Frameworkの動画はフルスクリーンのみで、.mov、.mp4、.m4v、.3gpの再生ができます。
動画の生成と制御
- (id) initWithContentURL:(NSURL *)url;
- (void) play;
- (void) stop;
プロパティ
@property MPMovieScalingMode scalingMode;
@property BOOL userCanShowTransportControls;
ノティフィケイション
NSString * const MPMoviePlayerScalingModeDidChangeNotification;
NSString * const MPMoviePlayerPlaybackDidFinishNotification;
MPMoviePlayerCotrollerの例
- (void) playMovieAtURL: (NSURL *)theURL
{
MPMoviePlayerCotroller *theMovie = [[MPMoviePlayerCotroller alloc] initWithContentURL:theURL];
theMovie.userCanShowTransportControls = NO; default
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selsector(myMovieFinishedCallbask:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:theMovie];
[theMovie.play];
}
- (void) myMovieFinishedCallbask:(NSNotification*) aNotificaition
{
// remove the observer, release the MPMoviePlayerController
}
グラフィック関連ではUIKit Graphics、Quartz 2D、Core Animation、OpenGL ES、Media Player、Core Audioの6つを利用できます。
UIKitのGraphicsは画面切り替えなどのアニメーションも含む2Dのユーザインタフェースを作り、Quartz 2Dは低レベルの2D描画、Core Animationはアプリケーションなどのアニメーション、OpenGL ESはゲーム用、Media Playerは動画再生、Core AudoとOpen ALは音声と役割を担っています。
UIKit Graphicsの主なClassは以下の通りです。
UIImage - イメージデータのクラス
UIImageView - インタフェースにイメージをいれたり、スライドショーのイメージを入れる
UIColor - 装置の色関連
UIFont、UILabel - 文字処理関連
UIScreen - スクリーン関連
他にユーティリティ関数がある。
低レベルのグラフィック処理を担当するQuartz 2Dでは、点や線、曲線、四角などはCGPathRefで扱い、四角の塗りつぶしはCGGradientRef、CGImageRefはPNGを中心にしてTIFF、JPEG、GIF、BMP、ICO、CUR、XBMを扱い、CGPDFDocumentRefはPDFを扱っています。
Core Graphicsで緑の枠に青い四角を描く描画サンプルです。
- (void) drawRect:(CGRect)rect
{
CGContextRef myContext = UICurrentContext();
CGRect ourRect = CGRectMake(40, 40, 240, 120);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
CGContextFillRect(context, ourRect);
CGContextSetRGBStrokeColor(context, 0.0, 1.0, 0.0, 1.0);
CGContextStrokeRectWithWidth(context, ourRect, 10);
}
Core Animationはユーザインタフェースのアニメーションを提供しています。レイヤをサポートしており、一つのレイヤに写真を置き、その上に文字のレイヤを置き、さらに絵のレイヤを置くことができます。また、レイヤを半透明にしたり、フェイドインアウトでレイヤを入れ替えることもできます。
Core AnimationのレイヤではCALayerが主のクラスとなり、CAEAGLLayre、CATiledLayer、CAScrollLayerがあります。また、アニメーションのクラスではCAAnimationが主のクラスとなり、CAPropertyAnimation、CABasicAnimation、CAKeyframeAnimationがあります。CAAnimationの下にはCAPropertyAnimationの他に、CATransitionとCAAnimationGroupがあります。
OpenGL ESはOpenGLの機能制限版でiPhoneで採用しているのはバージョン1.1です。詳細は以下のURLを参照してください。
http://www.khronos.org/opengles/
Media Player Frameworkの動画はフルスクリーンのみで、.mov、.mp4、.m4v、.3gpの再生ができます。
動画の生成と制御
- (id) initWithContentURL:(NSURL *)url;
- (void) play;
- (void) stop;
プロパティ
@property MPMovieScalingMode scalingMode;
@property BOOL userCanShowTransportControls;
ノティフィケイション
NSString * const MPMoviePlayerScalingModeDidChangeNotification;
NSString * const MPMoviePlayerPlaybackDidFinishNotification;
MPMoviePlayerCotrollerの例
- (void) playMovieAtURL: (NSURL *)theURL
{
MPMoviePlayerCotroller *theMovie = [[MPMoviePlayerCotroller alloc] initWithContentURL:theURL];
theMovie.userCanShowTransportControls = NO; default
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selsector(myMovieFinishedCallbask:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:theMovie];
[theMovie.play];
}
- (void) myMovieFinishedCallbask:(NSNotification*) aNotificaition
{
// remove the observer, release the MPMoviePlayerController
}
1-04 iPhone Application Frameworks - In Depth.m4v
ビデオのメモ
1-01と似たアーキテクチャのレイヤを解説しています。その後にMac OS XのCocoaとiPhoneのCocoa Touchを比較していて、Foundationは同じとして、AppKitとUIKitの違いに重点をおいています。UIViewの下にUIWindowとUIControlが配置されています。UIWindow、UIView、UIViewControllerの説明が続きます。UIViewControllerはviewを呼び出すだけでなく、メモリ不足の警告も出すようです。UIViewControllerの一つとしてUINavigationControllerをアドレス帳を例にソースコードと画面の動きを見せながら解説しています。各画面をスタックにプッシュしながらデータの詳細に移動し、再度データの概要 を見るときにはスタックからポップしています。
次にStatus Barの下にUIWindowでウィンドウを生成し、図 UIImageViewやデータ UITableView、ツールバー UITullbarControllerなどの部品を配置する方法を解説しています。
画面の構成の後は、EventとGesturesの処理が続きます。GesturesのUITouchSwipedRightは興味深いです。
「UIKitのControlとView」ではUIPickerというユーザインタフェースが紹介されています。UITableViewは一つの列だけを扱い、他の列を表すときには右にスライドするアニメーションを利用します。
1-01と似たアーキテクチャのレイヤを解説しています。その後にMac OS XのCocoaとiPhoneのCocoa Touchを比較していて、Foundationは同じとして、AppKitとUIKitの違いに重点をおいています。UIViewの下にUIWindowとUIControlが配置されています。UIWindow、UIView、UIViewControllerの説明が続きます。UIViewControllerはviewを呼び出すだけでなく、メモリ不足の警告も出すようです。UIViewControllerの一つとしてUINavigationControllerをアドレス帳を例にソースコードと画面の動きを見せながら解説しています。各画面をスタックにプッシュしながらデータの詳細に移動し、再度データの概要 を見るときにはスタックからポップしています。
次にStatus Barの下にUIWindowでウィンドウを生成し、図 UIImageViewやデータ UITableView、ツールバー UITullbarControllerなどの部品を配置する方法を解説しています。
画面の構成の後は、EventとGesturesの処理が続きます。GesturesのUITouchSwipedRightは興味深いです。
「UIKitのControlとView」ではUIPickerというユーザインタフェースが紹介されています。UITableViewは一つの列だけを扱い、他の列を表すときには右にスライドするアニメーションを利用します。
1-03 iPhone Application Development - Getting Started.m4v
ビデオのメモ
このビデオ シリーズではiPhoneのFrameworkをCocoa Touchと読んでいますが、どうもこのCocoa Touchは「ここ タッチ」に聞こえます(笑)
最初の部分は今までのビデオの解説と重複していて、次にObjective-C、View Controller Modelの解説が続きます。
Cocoa Touch命名省略ルールは以下の通りです。
iPhoneの"UIImageView"を例にすると
"UI" - UIKit frameworkの一部
"Image" - UIImageと共に機能
"View" - UIViewのサブクラス
UIImageViewはpropertieとaccessorメソッドを採用
Getter: animationImages
Setter: setAnimationImages
Delegation、Categories、Subclassの解説が続き、ようやくCocoa TouchのUIKitの解説が始まります。iPhoneのUIKitはMac OS XのAppKitにあたるそうです。UIKitには色々なframework(ツール)が含まれていて、ビデオではそのツール次々と列挙されます。
このビデオ シリーズではiPhoneのFrameworkをCocoa Touchと読んでいますが、どうもこのCocoa Touchは「ここ タッチ」に聞こえます(笑)
最初の部分は今までのビデオの解説と重複していて、次にObjective-C、View Controller Modelの解説が続きます。
Cocoa Touch命名省略ルールは以下の通りです。
iPhoneの"UIImageView"を例にすると
"UI" - UIKit frameworkの一部
"Image" - UIImageと共に機能
"View" - UIViewのサブクラス
UIImageViewはpropertieとaccessorメソッドを採用
Getter: animationImages
Setter: setAnimationImages
Delegation、Categories、Subclassの解説が続き、ようやくCocoa TouchのUIKitの解説が始まります。iPhoneのUIKitはMac OS XのAppKitにあたるそうです。UIKitには色々なframework(ツール)が含まれていて、ビデオではそのツール次々と列挙されます。
2008年6月12日木曜日
1-02 iPhone Development Tools Overview.m4v
ビデオのメモ
Xcodeの解説です。1-01のプロジェクト作成がデモンストレーションされます。iPhone関連のプロジェクトはCocoa Touchの名前で呼ばれているようです。
Organizerでプロジェクト管理やiPhoneへのダウンロードなどを行う。コンソールやクラッシュログ、スクリーンショットなども提供されている。
次はXcodeがもつコーディング部分の解説です。コード管理ツールShapshotsやSCMの解説もしています。最新版ではさらに便利なっているようです。また、APIの解説が表示されるResearch Assistantも紹介されています。
Interface Builderは"COMING SOON"になっています(笑)
ビルドのデバッグでは、デバッグ情報が吹き出しがポップアップします。iPhoneシミュレータとデバッガを同期させてデバッグできます。ポップアップメニューでシミュレータとiPhoneを切り替えて検証できます。
パフォーマンス解析ツールとしてInstrumentsが提供されていて、Xcodeと連携して動作します。メモリやプロセッサの占有度をグラフィカルに表示します。Runメニューの"Start with Performance ToolからActivity MonitorやCPU Sampler、File Activity、Leaksなどを選択できます。
Xcodeの解説です。1-01のプロジェクト作成がデモンストレーションされます。iPhone関連のプロジェクトはCocoa Touchの名前で呼ばれているようです。
Organizerでプロジェクト管理やiPhoneへのダウンロードなどを行う。コンソールやクラッシュログ、スクリーンショットなども提供されている。
次はXcodeがもつコーディング部分の解説です。コード管理ツールShapshotsやSCMの解説もしています。最新版ではさらに便利なっているようです。また、APIの解説が表示されるResearch Assistantも紹介されています。
Interface Builderは"COMING SOON"になっています(笑)
ビルドのデバッグでは、デバッグ情報が吹き出しがポップアップします。iPhoneシミュレータとデバッガを同期させてデバッグできます。ポップアップメニューでシミュレータとiPhoneを切り替えて検証できます。
パフォーマンス解析ツールとしてInstrumentsが提供されていて、Xcodeと連携して動作します。メモリやプロセッサの占有度をグラフィカルに表示します。Runメニューの"Start with Performance ToolからActivity MonitorやCPU Sampler、File Activity、Leaksなどを選択できます。
1-01 Introduction to the iPhone SDK.m4v
今日からメモを取りながら解説の動画見ることにしました。
まずは、iPhone SDKに入っているツールの紹介です。
Xcode 言わずとしれたMac OS XのIDE
Instruments リアルタイムでメモリやプロセッサのモニタ
Dashcode Webのユーザインタフェース構築ツール
Simulator iPhoneのシミュレータ
XcodeでCoco Touch Listテンプレートを使ったデモンストレーションをしています。ただし、ここで表示されているリストの内容はβ6では消えていました。New Projectの画面デザインも変わっています。
次にアーキテクチャの解説でCore OS、Core Services、Media、Cocoa Touchの各レイヤが解説されます。
Core OSではLibSystem library、
Core ServicesではCore foundation frameworkとCFNetwork framework、Security framework、SQLite library、XML libraries、
Mediaではグラフィック技術としてQuartz、Core Animation、OpenGL ESがあり、音声技術ではCore AudioとAudio ToolBox frameworks、OpenALがる。さらに動画技術ではMediaPlayer frameworkがある。
Cocoa TouchではUIKit frameworkがある。UIKitはアプリケーション間通信、グラフィックスとウィンド サービス、タッチなどのイベント処理、ボタンなのパーツ、Webとテキスト処理、加速検出のデータ処理、カメラ処理、写真ライブラリ処理、装置のID提供しています。さらに、Addressbook frameworkとAddressbook UI framework、場所情報を入手するCore Location frameworkも提供しています。
まずは、iPhone SDKに入っているツールの紹介です。
Xcode 言わずとしれたMac OS XのIDE
Instruments リアルタイムでメモリやプロセッサのモニタ
Dashcode Webのユーザインタフェース構築ツール
Simulator iPhoneのシミュレータ
XcodeでCoco Touch Listテンプレートを使ったデモンストレーションをしています。ただし、ここで表示されているリストの内容はβ6では消えていました。New Projectの画面デザインも変わっています。
次にアーキテクチャの解説でCore OS、Core Services、Media、Cocoa Touchの各レイヤが解説されます。
Core OSではLibSystem library、
Core ServicesではCore foundation frameworkとCFNetwork framework、Security framework、SQLite library、XML libraries、
Mediaではグラフィック技術としてQuartz、Core Animation、OpenGL ESがあり、音声技術ではCore AudioとAudio ToolBox frameworks、OpenALがる。さらに動画技術ではMediaPlayer frameworkがある。
Cocoa TouchではUIKit frameworkがある。UIKitはアプリケーション間通信、グラフィックスとウィンド サービス、タッチなどのイベント処理、ボタンなのパーツ、Webとテキスト処理、加速検出のデータ処理、カメラ処理、写真ライブラリ処理、装置のID提供しています。さらに、Addressbook frameworkとAddressbook UI framework、場所情報を入手するCore Location frameworkも提供しています。
登録:
投稿 (Atom)
Open Source
Appleが主催するdarwin-devのMailing listにAppleのDarwin TeamのWilliam SiegristがDeveloper Tools 3.1.3とiPhone OS 3.0関連のソース一部を公開したと投稿していました。 Developer To...
-
このメモは"iPhone Developer Program Standard Program Portal User Guide for OS X iPhone 2.0"という表題(ファイル名:iphone_developer_program_user_gu...
-
アプリケーションの追加方法はAdd New Applicationに書かれています。先のページにもあるように、Manage Your Applicationsがアップロードして登録する場所です。アプリケーションの大きさが200MBを超える場合にはこのページにあるApplicati...
-
iTunes Connect Developer Guide(ファイル名:iTunesConnect_DeveloperGuide.pdf)のメモです。 Program Portalの解説44ページに書かれている"Submitting your application ...