[PR]
2024年11月21日
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
代表クラスのポインタ取得
2009年01月19日
多数のビューをもつプログラムでは設定データの管理は代表クラスで一元管理したほうが解りやすいです。なぜならアプリケーション起動直後にデータの読み込みを行うのも、アプリケーション終了時にデータを保存するのもプロジェクトの〜AppDelegateクラスで行うのが基本的なお作法だからです。そのため代表クラスに設定値変更用の命令を用意しておき、ビュー側でデータを変更したらそれを呼び出して代表クラス側の値を逐次変更してゆきます。では、ビューから代表クラスのポインタを取得するにはどうするかというと、UIApplicationクラスにある命令を使います。
Tiny3DAppDelegate *appDelegate = (Tiny3DAppDelegate *)[[UIApplication sharedApplication]delegate];
[appDelegate setEdited];
これは現在実行中のプログラムの代表クラスを返す命令です。実際の呼び出しは、上のような形で行うことが多いです。なお、キャストを入れないとid型が返るので、コンパイル時に警告が出ます。また、当たり前ですがビューコントローラーのメソッドファイル(.mファイル)の頭の部分に、
といったようにインポートを書き忘れないようにしましょう。なお、id型で受け取ってメッセージを送る書き方もできます。
これはダウンロードが終わったときに代表クラスに終了を通知する際、コールバック関数内で使った例です。このメッセージを受け取ったら、代表クラスからビュー側へメッセージを送ってビュー側にも通知し、ダウンロードが終わった旨を画面に表示するようにする。そんなときに利用しました。
#import "Tiny3DAppDelegate.h"
id appDelegate = [[UIApplication sharedApplication]delegate];
objc_msgSend(appDelegate,@selector(finishDownload));
PR
実機でプログラムが動かない場合
2008年12月31日
プログラムが完成し、シミュレーターで一通りの動作確認が完了たら、実機に転送して確認するのですが、ここで転送がうまくいかない場合があります。この場合、実機を再起動すると何事も無かったかのように動くようになる場合があります。実機の再起動が必要かどうかは、Xcodeのメニューにある、ウインドウからオーガナイザを選ぶことで確認できます。オーガナイザの画面左にあるDEVICESに注目してみてください。実機が正常に接続されている場合には実機のアイコンの右にあるインジケーターが緑色になっています。この場合、実機への転送は問題なく行えます。ここが黄色になっている場合には実機の再起動が必要です。
なお、再起動は一度電源を切った後(左上のボタンを長押しで表示される電源オフの表示で左にある赤い矢印ボタンを完全に右にスライドさせると電源が切れます。)、左上のボタンを再度長く押して離せば良いです。おまけですが電源を切っている間は先ほどのインジケーターが赤色になっています。
なお、再起動は一度電源を切った後(左上のボタンを長押しで表示される電源オフの表示で左にある赤い矢印ボタンを完全に右にスライドさせると電源が切れます。)、左上のボタンを再度長く押して離せば良いです。おまけですが電源を切っている間は先ほどのインジケーターが赤色になっています。
アプリケーションの起動動作
2008年11月19日
アプリケーションを起動すると、まずmain.mにあるmainという名前の命令が実行されます。プロジェクトにInfo.plistがある場合には、これも読み込まれます。Info.plistのkeyのうちMain nib file base nameに設定されているファイルが読み込まれます。nibと書いてありますが、実際の拡張子はxibです。デフォルトではMainWindwow.xibが読まれます。
このファイルをInterface Builderで開くと、中に〜App Delegateという項目があります。これがこのアプリケーションを代表するクラスになります。
代表クラスの〜AppDelegate.mにはapplicationDidFinishLaunchingという名前の命令があります。プログラマがアプリケーション起動直後にそのアプリケーション固有の動作をさせたい場合には、main.mにではなくこの内部にコードを書くのが作法のようです。新規プロジェクトとして基本的なビュー1つのアプリケーションを作った場合、ここにはアプリケーションのメインウインドウに、1つのビューコントローラーに関係づけられたビューが加えられ、それが表示されるという命令が書かれています。
このファイルをInterface Builderで開くと、中に〜App Delegateという項目があります。これがこのアプリケーションを代表するクラスになります。
代表クラスの〜AppDelegate.mにはapplicationDidFinishLaunchingという名前の命令があります。プログラマがアプリケーション起動直後にそのアプリケーション固有の動作をさせたい場合には、main.mにではなくこの内部にコードを書くのが作法のようです。新規プロジェクトとして基本的なビュー1つのアプリケーションを作った場合、ここにはアプリケーションのメインウインドウに、1つのビューコントローラーに関係づけられたビューが加えられ、それが表示されるという命令が書かれています。
新規プロジェクトの作り方
2008年11月19日
Xcodeを起動後、メニューから
ファイル>新規プロジェクト...
の順で選ぶと新規プロジェクトの種類を選ぶダイアログが開きます。
ダイアログ左側からiPhone OSのApplicationを選べば右上にiPhone/ iPod touch用のプロジェクトがリストアップされます。初心者がまず使いそうな選択肢は下の4つになると思います。
View-Based Application
1画面の単純なアプリケーションを作る場合に選択します。
Utility Application
2画面からなるアプリケーションで、起動後の画面右下に表示されるボタンで2画面目にひっくり返るようなアプリケーションをしながら移動するアプリケーションを作成したい場合に選択します。
Tab Bar Application
画面の切り替えを下にあるタブバーで行うことが出来るアプリケーションを作りたいときに選択します。画面の数はスタート時点では2個ですが後から追加することができます。
Navigation-Based Application
データをリスト表示するアプリケーションを作りたいときに選択します。データが階層構造になっている場合にはこれを選びます。Kigenの基本バージョンはこれで作り始めましたが、後からTab Bar Applicationに鞍替えしました。
ファイル>新規プロジェクト...
の順で選ぶと新規プロジェクトの種類を選ぶダイアログが開きます。
ダイアログ左側からiPhone OSのApplicationを選べば右上にiPhone/ iPod touch用のプロジェクトがリストアップされます。初心者がまず使いそうな選択肢は下の4つになると思います。
View-Based Application
1画面の単純なアプリケーションを作る場合に選択します。
Utility Application
2画面からなるアプリケーションで、起動後の画面右下に表示されるボタンで2画面目にひっくり返るようなアプリケーションをしながら移動するアプリケーションを作成したい場合に選択します。
Tab Bar Application
画面の切り替えを下にあるタブバーで行うことが出来るアプリケーションを作りたいときに選択します。画面の数はスタート時点では2個ですが後から追加することができます。
Navigation-Based Application
データをリスト表示するアプリケーションを作りたいときに選択します。データが階層構造になっている場合にはこれを選びます。Kigenの基本バージョンはこれで作り始めましたが、後からTab Bar Applicationに鞍替えしました。