投稿

11月, 2010の投稿を表示しています

[self performSelector: @selector (methodAfterDelay) withObject: nil afterDelay: 0.0];

イベントサイクルの中でsetNeedsDisplayを読んで、さらに
[self performSelector: @selector (methodAfterDelay) withObject: nil afterDelay: 0.0];
とすると、drawRectとmethodAfterDelayの実行の順序はどうなるか?

どうもdrawRectが呼ばれてからmethodAfterDelayが呼ばれることも
drawRectが呼ばれずにmethodAfterDelayが呼ばれることも両方あるようである。

最後の0.0を0.1にするとdrawRectが呼ばれてからmethodAfterDelayが呼ばれる(もしくは可能性が高い)。

1つのプロジェクトから2つのバージョンを作るときのまとめ

有料版の他に無料版を作るときは、それぞれのXcodeプロジェクトを作るのではなく、1つのプロジェクトから2バージョン作れたほうが、管理が楽!
なのでそのやり方を簡単にまとめておく(内容の正確さは保証しないので注意。徐々に訂正していくノリです)。

・前知識
「あるアプリとあるアプリが別のアプリである」とみなす条件は「バンドル名」と「バンドルidentifier」が別であることらしい。
バンドル名:作成されるアプリは実際はファイルが階層構造になっている。その一番親のフォルダの名前。
バンドルidentifier:com.apple.enjoybikeのような他とかぶらないようにアプリに付けられる識別子

・ターゲット情報の複製
ターゲット情報とは実行ファイル(ユーザーのiPhoneにダウンロードされるファイル)をどう作成するかの情報。これを有料版と無料版でわけておく。
複製のやり方はXcodeでプロジェクトを開いて、左の「ターゲット」の項目にあるものを右クリックから複製し、新たな名前(◯◯Liteなど)をつける

・プロダクト名の指定
プロダクト名とはアプリの名前。
新たに作成したターゲットで右クリックして、「情報を見る」を選択。「ビルド」というタブをクリックし、出てきたリストの中の「プロダクト」の欄。ここを変更する。注意、Product Nameがターゲット名と同じになる設定になっていて、変更する必要がない場合は変更しなくてもいい。

・info.plist
バンドルidentifierを指定するのがinfo.plistというものです。有料版と無料版で別のバンドルidentifierを指定してやる必要があります。さきほどターゲットを複製したときにinfo.plistも新しいのが作成されし、Xcodeに追加されているのでそれを使用したい名前に変更。その中のバンドルidentifierも変更しておく。
その後、作成したターゲットの「情報を見る」を選択し、「ビルド」タブをクリックし、「info.plistファイル」の項目の名前も変更する。

ソースコードの中でバージョンによって走らせる部分を制御すると思います。
やり方をLITEバージョンの例でいうと、LITEバージョン用のターゲットの「情報を見る」より「プリプロセッサマクロ」の項目(探すのが少し大変)にLITEといれておくと、

UI

今日、喫茶店でチュートリアルのサンプルを作ってきた。
そのとき感じたことは、このアプリはまだUIが未熟だということ。
商品化のレベルに達してない。
演算装置の使い方が下手だ。もっと、必要なところを厳選しないといけない。

最近iPod Touchの新しいのを買ったが、そのときにも同じことを感じた。
新しいのはCPUが速いが画面のピクセル数が多いので、同じ処理をしても時間がかかるかもしれない。