xcodeなんでここなの?
iPhoneのサンプルコードを手にいれたのでコンパイルして実行したかったのですが、SDKのバージョンが違うエラーメッセージが。
xcodeの3.2からインストールしたのでSDKが3.0しかないのが問題のようです。
で、インストールの方法をしらべていると、こんなページを発見
この方が発見したインストールしたSDKを移動させる方法でSDKのインストールはうまくいきました。
でも、なんで標準の位置にインストールされないでしょうかね?追加だから?
iPhoneのサンプルコードを手にいれたのでコンパイルして実行したかったのですが、SDKのバージョンが違うエラーメッセージが。
xcodeの3.2からインストールしたのでSDKが3.0しかないのが問題のようです。
で、インストールの方法をしらべていると、こんなページを発見
この方が発見したインストールしたSDKを移動させる方法でSDKのインストールはうまくいきました。
でも、なんで標準の位置にインストールされないでしょうかね?追加だから?
Objecitve-Cでもenumが使えたんですね。
例えば
enum card {DAIAMOND,HEART,SPADE,CLUBS };
enum card cardStatus;
って定義しておくと
cardStatus = DIAMOND;
みたいな書き方でわかりやすく使える訳です。
おそらく便利なんでしょうね
iPhoneで使うタッチイベントって4つあります。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Touch"); }
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Moved"); }
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Ended"); }
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Cancelled"); }
この4つを検出すればタッチイベントは大丈夫ですね。
あれ、でもドラッグってどうするんだろ?
CocoaでつかうObjective-Cは配列が面倒(CやJavaなどと書き方がかなり違うという点で)です。
配列には2種類クラスが用意されていて、配列のサイズを変更出来るタイプとできないタイプ。
今回調べたのはサイズを変更できないタイプ。
まず、文字列をつかって初期化から。
NSArray* array = [NSArray arrayWithObjects:@"Sapporo",@"Asahi",@"Kirin",@"Suntry",nil];
で、配列の数を調べるのは以下のファンクション
NSLog(@"count = %d",[array count]);
一番引っかかったのが文字列の表示のしかた。
NSLog(@"Maker = %@",[array objectAtIndex:1]);
C言語だったりすると%sで文字列だったとおもうのですが、Objective-Cだと%@。
ま、書式だってCなどとは違うんだから、いいかって感じですね。
xcodeの便利なショートカットに「ヘッダ/ソースファイルの切り替えショートカット」があります。
xcodeはヘッダーファイルとクラスファイルが対になっているので、その切り替えってかなり頻繁に必要になります。
で、そのためのショートカットは OPT + COMMAND + 上矢印です。
使えますよ。
iPhone SDKプログラミング大全ゲームプログラミングをつかってお勉強をしております。
しかし、どうしてもうまく動作しません。
で、サンプルをダウンロードして動作チェックしてみることにしました。
しかし、動きません。というかエラーが発生。
エラー内容をしらべてみるとどうもシミュレータのバージョンが古いみたい。
サンプルは3.1。こちらは3.0。
早速アップルのサイトへいってxcodeともども落としてきました。
xcodeも3.2.2。シミュレータは3.1.2まで対応してました。
結果サンプルは見事動作。
xcodeってアップデートのお知らせってこないんですね。
xcodeでiPhoneのプログラムを勉強しておりますが、どうしても原因がわからないエラーに遭遇しました。
rect = CGRectMake(
PANELWIDTH * (i % 3) + PANELLEFTSPACE,
PANELHEIGHT * (i % 3) + PANELUPSPACE,
PANELWIDTH,
PANELHEIGHT);
の2行目のところで以下のようなエラー
'PANELWIDHT' undeclared (first use in this function)
これは別のヘッダーファイルでちゃんと定義してあります。目を皿のようにしてみてもわかりません。
で、ピーン。これって直接PANELWIDTHを間違えている訳ではなく、PANELLEFTSPACEないで使っているPANELWIDTHを間違えていたわけですね。
そういう事もあるんですねぇ。
第4章のノベルウェアの章はなんとか読み解き、第5章「フリックで操作する8パズル」に挑戦です。
クラスを調べる時はクラスの上でOPTIONを押し、ダブルクリック。
サンプルにもアクセスできるし、xcodeよくできてます。
iPhone用のプログラムを勉強してます。
「iPhone SDK3 プログラミング大全 ゲーム プログラミング」のアドベンチャーゲームです。
この章で、QuartzCoreのFrameworkを使ったトランジションがありました。
この部分だけを切り出してトランジションの効果を調べるプログラムに修正してみました。
よく読み、ちゃんと作ったと思ったのですが、全然トランジションがかかりません。
2枚の絵BGを配置し、ボタンで切り替わるようにし、その切り替わりの時にトランジションがかかるはず、だったのに、切り替わるだけで効果はありません。
本を見直し、ネットで調べ、手元の別の本も調べたのですがわかりません。どこか、なにか別の設定をしなくてはいけないのか?とかおもったのですが、それらしい記述はありません。
そのときふと思ったのはoutletの接続ができてないのでは?
InterfaceBuilderをみてみると接続を忘れてました。
この接続を正しくする事で、ちゃんとトランジションは実行されました。
でもね、トランジションをいろいろかえても効果の違いがわからないんですよ。まだ、なにかあるのかなぁ。
Objective-c 2.0から採用された宣言プロパティという機能があります。
どんなものかといいますと
値を設定したり、値を取得するのにいちいちメソッドを用意しなくてもすむ仕組みです。
使い方は至って簡単
.h に
@property (readonly) NSString *name;
みたいに書いて、
.mに
@synthesize name; と記述
ドット演算子をつかってアクセスできます。
この機能をつかえば、手間は省けそうすよね。
Optionが今一つわかり憎いですけどね
Apple | Cocoa Sunday | FileMaker | Final Cut Studio | Flash & Flash Lite | iLife & iWork | iPhone | Mac Tips | MacLabo | Macショートカット紹介 | MACハードウェア | Omniグループ | OSX | Parallels Desktop | Ruby | Safari | Shade | こんなことできるかな?(お題) | ネットワーク | パソコン・インターネット | プログラムの話 | ユーティリティとその他のアプリケーション | 日記・コラム・つぶやき | 書籍・雑誌 | 本日出動したソフトウェア | 2Dグラフィック
Recent Comments