2011年3月27日日曜日
2011年2月26日土曜日
2011年1月23日日曜日
iOS既存プロジェクト、ソースの活用方法
開発用のメモです。既存プロジェクト/ソースを活用し、有料/無料App等を生成する方法には、以下の方法があるようです。
1.プロジェクトを複製して利用する場合
・「プロジェクト」メニューの上から3つ目、「名称変更」を行う。
そうすると、関連の
・xcodeproj名
・prefix.pch名
・info.plist名
・その他もろもろ
全部一発で置換してくれる。
2.複数のターゲットを作成する場合
ターゲットを複製し、一方のビルド設定のプリプロセッサマクロに定数定義し、 #ifdef で振り分けるといいようです。詳しくはipone SDK開発のレシピを参照
http://astore.amazon.co.jp/taizoy0725-22?_encoding=UTF8&node=8
1.プロジェクトを複製して利用する場合
・「プロジェクト」メニューの上から3つ目、「名称変更」を行う。
そうすると、関連の
・xcodeproj名
・prefix.pch名
・info.plist名
・その他もろもろ
全部一発で置換してくれる。
2.複数のターゲットを作成する場合
ターゲットを複製し、一方のビルド設定のプリプロセッサマクロに定数定義し、 #ifdef で振り分けるといいようです。詳しくはipone SDK開発のレシピを参照
http://astore.amazon.co.jp/taizoy0725-22?_encoding=UTF8&node=8
2010年9月12日日曜日
iPadでObjective-Cコードを見る
2010年8月7日土曜日
CoCoaブラウザ
Mac, iPhoneOS3.2, iOS4を含むライブラリを一覧で見ることのできるブラウザです。
検索ができるともっと便利になるかと思いますが、クラスが特定できているときは便利かもしれません。
http://www.macsoft.info/soft/731/cocoa-browser-air.html
検索ができるともっと便利になるかと思いますが、クラスが特定できているときは便利かもしれません。
http://www.macsoft.info/soft/731/cocoa-browser-air.html
2010年4月24日土曜日
XCodeプロジェクトの中身
XCodeプロジェクトの「グループとファイル」の一番上のグループは、「プロジェクト」に必要なソースコードやライブラリのようです。(名前はプロジェクト名になります)
◆Classes
Objective-C のコードが入ります。通常はここのファイルをコーディングします。
◆Other Sources
Objective-C 以外のコードが入ります。
・ *.pch : プリコンパイル済みヘッダ(外部のフレームワークヘッダ等)
・ main.m : メイン関数 main()が記載された実装ファイル(原則変更不要)
◆Resources
アプリケーションのイメージ、サウンド、ムービー、テキストファイル、プロパティリスト等が入る。
・ 〜 Controller.xlib Interface Builder が見るファイル
・ MainWindow.xlib メインとなるInterface Builderファイル(nibファイル:nはNext Step<元となったOS>の意味)
・ 〜 -Infor.plist プロパティリスト(画面の設定情報)
◆Frameworks
リンク可能な特殊なライブラリ(???)
◆Products
生成したアプリケーション(*.app)が入ります。
◆Classes
Objective-C のコードが入ります。通常はここのファイルをコーディングします。
◆Other Sources
Objective-C 以外のコードが入ります。
・ *.pch : プリコンパイル済みヘッダ(外部のフレームワークヘッダ等)
・ main.m : メイン関数 main()が記載された実装ファイル(原則変更不要)
◆Resources
アプリケーションのイメージ、サウンド、ムービー、テキストファイル、プロパティリスト等が入る。
・ 〜 Controller.xlib Interface Builder が見るファイル
・ MainWindow.xlib メインとなるInterface Builderファイル(nibファイル:nはNext Step<元となったOS>の意味)
・ 〜 -Infor.plist プロパティリスト(画面の設定情報)
◆Frameworks
リンク可能な特殊なライブラリ(???)
◆Products
生成したアプリケーション(*.app)が入ります。
XCodeプロジェクト アクティブSDK
XCodeでは、動作確認を行うSDKのバージョンとiPhoneシミュレータか実機か等を選択することができます。
方法としては、XCodeを起動して、テンプレートを選択したら、XCodeプロジェクトウィンドウが開きます。そのウィンドウの左上にある「Simulator - ....」というボタンをクリックすると、開発のベースとなるSDKのバージョン、実機かシミュレータか、デバック用かリリース用かが選択できます。
方法としては、XCodeを起動して、テンプレートを選択したら、XCodeプロジェクトウィンドウが開きます。そのウィンドウの左上にある「Simulator - ....」というボタンをクリックすると、開発のベースとなるSDKのバージョン、実機かシミュレータか、デバック用かリリース用かが選択できます。
iPhone開発の制約
iPhone開発にあたっては、以下の制約の考慮が必要なようです。
- メインメモリ: 128MBですが、他のリソースもあり、64MB程度の範囲でプログラムする必要があるようです。さらにメモリが逼迫してきた場合、通知があり、メモリ解放をしないと停止させられるそうです。
- 終了処理: ホームボタンが押されるなど、終了通知があった場合は、必要な情報を保存し、5秒以内に終了しないと情報は失われるそうです。
iPhone Developer Program
iPhone 実機でのテストや、Appleストアでの配信のためには、有償のiPhone developer Program への加入が不可欠です。
年間参加費 ¥10,800-ですが、Apple への敬意ということでしかたないですね。
アドレスは以下となります。
http://developer.apple.com/jp/programs/iphone/
もっとも自信が持てるまでは、加入は見送りたいと思います。
年間参加費 ¥10,800-ですが、Apple への敬意ということでしかたないですね。
アドレスは以下となります。
http://developer.apple.com/jp/programs/iphone/
もっとも自信が持てるまでは、加入は見送りたいと思います。
2010年4月22日木曜日
AppleのDeveloperサイト
今更ですが、iPhoneの開発にはAppleのDeveloperサイトから情報を得るのが基本です。
まず、http://developer.apple.com/jp/ へ行きます。
ここから、iPhone Dev Centerをクリックします。
すると、英語サイトが現れ、挫折します(笑)
そこであきらめずに、日本語サイトに直接行きます。
http://developer.apple.com/jp/iPhone/library/japanese.html
まず、http://developer.apple.com/jp/ へ行きます。
ここから、iPhone Dev Centerをクリックします。
すると、英語サイトが現れ、挫折します(笑)
そこであきらめずに、日本語サイトに直接行きます。
http://developer.apple.com/jp/iPhone/library/japanese.html
iPhoneシミュレータの「写真アプリ」に画像を入れる方法
iPhoneシミュレータの写真アプリに画像を入れるには、シミュレータに画像をドラック&ドロップし、Safariで開いたところを長押ししてあげればいいようです。
iPhoneテンプレートの種類
iPhoneでは予め7種のテンプレートが用意され、
これをベースに開発を進めます。
・Navigation-based Application
アイテムリストを表示するためのナビゲーションコントローラを使うテンプレートです。
コアデータを格納(Use Core Data for strageを選択)する場合、取得したリザルトコントローラを使って管理されたアイテムリストを表示するテンプレートとなります。
Core Data は MVC アーキテクチャの Model を補完するものです。iPhone 3.0 以前は SQLite などを使用していたのを Core Data を使って SQL を書くことなくデータペースアプリケーションを作れます。
http://www.syuhari.jp/blog/archives/1860
チュートリアル、サンプルコードについても記載があります。
・OpenGL ES Application
OpenGL ESペースのビューを使うテンプレートです。アニメーションを表示するOpenGL ESによるシーン、タイマーを描画する場合に使用します。
・Split View-based Application
スプリットビューコントローラと、master-detail型の2つのビューのコントローラでアプリケーションを作成するテンプレートです。
これを動かすとデカイウィンドウがでてきます。どうやらiPhone用といいながら、iPad用アプリケーションのようです。
・Tab Bar Application
タブバーとタブバーアイテムのためのビューコントローラで構成されるアプリケーションを作成するテンプレートです。
・Utility Application
メインビューとフリップスタイルビューを持つアプリケーションを構成するためのテンプレートです。メインビューをフリップさせるためのinfoボタンと、メインビューに戻るためのDoneアイテムを持つナビゲーションバーで構成されます。
・View-based Applicaton
シングルビューのアプリケーションのテンプレートです。
・Windows-based Application
一つのウィンドウとアプリケーションデリゲートのみのテンプレートです。
これをベースに開発を進めます。
・Navigation-based Application
アイテムリストを表示するためのナビゲーションコントローラを使うテンプレートです。
コアデータを格納(Use Core Data for strageを選択)する場合、取得したリザルトコントローラを使って管理されたアイテムリストを表示するテンプレートとなります。
Core Data は MVC アーキテクチャの Model を補完するものです。iPhone 3.0 以前は SQLite などを使用していたのを Core Data を使って SQL を書くことなくデータペースアプリケーションを作れます。
http://www.syuhari.jp/blog/archives/1860
チュートリアル、サンプルコードについても記載があります。
・OpenGL ES Application
OpenGL ESペースのビューを使うテンプレートです。アニメーションを表示するOpenGL ESによるシーン、タイマーを描画する場合に使用します。
・Split View-based Application
スプリットビューコントローラと、master-detail型の2つのビューのコントローラでアプリケーションを作成するテンプレートです。
これを動かすとデカイウィンドウがでてきます。どうやらiPhone用といいながら、iPad用アプリケーションのようです。
・Tab Bar Application
タブバーとタブバーアイテムのためのビューコントローラで構成されるアプリケーションを作成するテンプレートです。
・Utility Application
メインビューとフリップスタイルビューを持つアプリケーションを構成するためのテンプレートです。メインビューをフリップさせるためのinfoボタンと、メインビューに戻るためのDoneアイテムを持つナビゲーションバーで構成されます。
・View-based Applicaton
シングルビューのアプリケーションのテンプレートです。
・Windows-based Application
一つのウィンドウとアプリケーションデリゲートのみのテンプレートです。
アクションメソッドとアウトレットとアプリケーションデリゲート
アクションメソッドとアプリケーションデリゲートの違いがわかっていないのでここで整理します。
■アクションメソッド:
呼び出し側のイベントにより、当該オブジェクトのインスタンスを呼び出すために、当該インスタンスを(IBAction)で識別、Interface Builderに明示し、InterfaceBuilderのユーザインタフェースに表示されるため、インスタンスと呼び出し側オビジェクとをリンクします。ここのインスタンスで取得されるsenderは、呼び出し側のオブジェクトそのものとなり、当該オブジェクトのメソッドも利用可能となります。
AppDelegte.h のクラス宣言でメソッドプロトタイプ宣言の返り値に(IBAction) を指定します。
----------------------------------------------------------------------------------------
@interface xxxAppDelegate : NSObject <UIApplicationDelegate>{
// インスタンス変数宣言
}
// メソッドプロトタイプ宣言
- (IBAction) action : (UITextField *) sender ;
// forEvent : (UIEvent *) event を書くとさらに時刻やタッチされた座標等の追加
// 情報を得ることができます。
@end
------------------------------------------------------------------------------------------
これにより、Interface Builder上でアクションメソッドとして表示されます。
さらにInterface Builderにより、ボタン等のクラスの動作(Event)と
結びつけられることで、イベント発生時に呼び出されます。
呼び出された後の動作は、AppDelegate.mに記述します。
<関連付けクラス(Event) ⇒ アクションメッソドが呼び出される。>
■アウトレット
アウトレットは、メソッドプロトタイプ宣言ではなく、インスタンス変数宣言に記載します。
----------------------------------------------------------------------------------------
@interface xxxAppDelegate : NSObject <UIApplicationDelegate>{
// インスタンス変数宣言
}
// メソッドプロトタイプ宣言
@end
------------------------------------------------------------------------------------------
これにより、Interface BuilderのOutlet(コンセントの意)が現れ、ユーザインタフェース等の
クラス(インスタンス)そのものと関連づけます。
この関連付けにより、xxxAPPDelegate.m に当該インスタンスとそのメソッドを直接呼ぶことができるようです。
例:[ webView loadRequest : urlReq ];
<アウトレット宣言クラス ⇒ 関連付けクラスのメソッド等を呼び出すことができる>
■アプリケーションデリゲート
アプリケーションデリゲートは、アウトレットの一種であり、UIApplicationがデフォルトで保有するアウトレットとして、deligateが宣言され、Interface Builderから見ることができます。
<UIApplicationのアウトレット(deligate) → 関連付けクラスに記載されたアウトレット指定のメッソドを記述すればUIApplicationから必要時に呼び出だされる>
やっと理解できました。ほっ。
■アクションメソッド:
呼び出し側のイベントにより、当該オブジェクトのインスタンスを呼び出すために、当該インスタンスを(IBAction)で識別、Interface Builderに明示し、InterfaceBuilderのユーザインタフェースに表示されるため、インスタンスと呼び出し側オビジェクとをリンクします。ここのインスタンスで取得されるsenderは、呼び出し側のオブジェクトそのものとなり、当該オブジェクトのメソッドも利用可能となります。
AppDelegte.h のクラス宣言でメソッドプロトタイプ宣言の返り値に(IBAction) を指定します。
----------------------------------------------------------------------------------------
@interface xxxAppDelegate : NSObject <UIApplicationDelegate>
// インスタンス変数宣言
}
// メソッドプロトタイプ宣言
- (IBAction) action : (UITextField *) sender ;
// forEvent : (UIEvent *) event を書くとさらに時刻やタッチされた座標等の追加
// 情報を得ることができます。
@end
------------------------------------------------------------------------------------------
これにより、Interface Builder上でアクションメソッドとして表示されます。
さらにInterface Builderにより、ボタン等のクラスの動作(Event)と
結びつけられることで、イベント発生時に呼び出されます。
呼び出された後の動作は、AppDelegate.mに記述します。
<関連付けクラス(Event) ⇒ アクションメッソドが呼び出される。>
■アウトレット
アウトレットは、メソッドプロトタイプ宣言ではなく、インスタンス変数宣言に記載します。
----------------------------------------------------------------------------------------
@interface xxxAppDelegate : NSObject <UIApplicationDelegate>{
// インスタンス変数宣言
}
// メソッドプロトタイプ宣言
@property ( nonatomic, retain) IBOutlet UIWebView* WebView;
@end
------------------------------------------------------------------------------------------
これにより、Interface BuilderのOutlet(コンセントの意)が現れ、ユーザインタフェース等の
クラス(インスタンス)そのものと関連づけます。
この関連付けにより、xxxAPPDelegate.m に当該インスタンスとそのメソッドを直接呼ぶことができるようです。
例:[ webView loadRequest : urlReq ];
<アウトレット宣言クラス ⇒ 関連付けクラスのメソッド等を呼び出すことができる>
■アプリケーションデリゲート
アプリケーションデリゲートは、アウトレットの一種であり、UIApplicationがデフォルトで保有するアウトレットとして、deligateが宣言され、Interface Builderから見ることができます。
<UIApplicationのアウトレット(deligate) → 関連付けクラスに記載されたアウトレット指定のメッソドを記述すればUIApplicationから必要時に呼び出だされる>
やっと理解できました。ほっ。
アウトレットとは
予めInterface Builderで生成されているインスタンス(ここではUIWebView)をAPPDeligateで宣言した変数に組み込むには、IBOutletという形で明示してヘッダファイルで型を宣言するようです。
そうすると、ソースファイル上で宣言する必要はなく、AppDeligateのOutlet変数をInterface BuilderでWindow上に貼付けたWebViewへドラックすることで関連付け組み込むことができるそうです。
@interface Web_blowserAppDelegate : NSObject {
IBOutlet UIWebView* webView;
UIWindow *window;
}
そうすると、ソースファイル上で宣言する必要はなく、AppDeligateのOutlet変数をInterface BuilderでWindow上に貼付けたWebViewへドラックすることで関連付け組み込むことができるそうです。
@interface Web_blowserAppDelegate : NSObject {
IBOutlet UIWebView* webView;
UIWindow *window;
}
iPhoneアプリのコーディングの基本
iPhoneで最初に動作するコードが書かれているのが、Other Sourcesにある"main.m"となります。
---- main.m -------------------
#import
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
----------------------------------
この場合、main.mから呼び出されるUI Applicationで標準化された処理を実行することになるそうです。
標準化されていない処理を実行させたい場合には、main.mを直接コーディングすることはあまりなく、UI Applicationから標準以外の処理を依頼する"xxxAppDelegate"クラスをコーディングすることになるそうです。
そのため、コーティング対象はClassesフォルダにある、“xxxAppDelegate.m", "xxxAppDelegate.h"上でコーディングしていくことになるそうです。
---- main.m -------------------
#import
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
----------------------------------
この場合、main.mから呼び出されるUI Applicationで標準化された処理を実行することになるそうです。
標準化されていない処理を実行させたい場合には、main.mを直接コーディングすることはあまりなく、UI Applicationから標準以外の処理を依頼する"xxxAppDelegate"クラスをコーディングすることになるそうです。
そのため、コーティング対象はClassesフォルダにある、“xxxAppDelegate.m", "xxxAppDelegate.h"上でコーディングしていくことになるそうです。
ボタンを押した際のイベントを設定する。
ボタンを押した際のイベントは、Interface Builderから簡単に設定できます。
InspectorウインドウのConnectionタブにあるRecieved Actionの○を、関連づけたいボタンにドラックすれば完了です。
ただし、このActionがないものについては、コーディングが必要になります。
InspectorウインドウのConnectionタブにあるRecieved Actionの○を、関連づけたいボタンにドラックすれば完了です。
ただし、このActionがないものについては、コーディングが必要になります。
登録:
投稿 (Atom)








