投稿

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バージョン用のターゲットの「情報を見る」より「プリプロセッサマクロ」の項目(探すの

UI

今日、喫茶店でチュートリアルのサンプルを作ってきた。 そのとき感じたことは、このアプリはまだUIが未熟だということ。 商品化のレベルに達してない。 演算装置の使い方が下手だ。もっと、必要なところを厳選しないといけない。 最近iPod Touchの新しいのを買ったが、そのときにも同じことを感じた。 新しいのはCPUが速いが画面のピクセル数が多いので、同じ処理をしても時間がかかるかもしれない。