ラベル Objective-C の投稿を表示しています。 すべての投稿を表示
ラベル Objective-C の投稿を表示しています。 すべての投稿を表示

2011年2月22日火曜日

NSDateのロケール

iOS4.1ではNSDateはGMT時刻を持っているようだ。

NSDate *d = [NSDate date];
NSComparisonResult result = [d compare yesterday];
上記のコードのうち前日の23:59頃にyesterdayの値を格納していて、
翌日の0:01に上記コードを実行した場合、
期待しているのはNSOrderedDescendingなのであるが、
NSOrdearedSameが返ってくる。
これは日本時刻では日付は変わっているが
NSDateが持っているGMT時刻では日付は変わっていないので
結果が同じ日付と判断されてしまう。

NSDateにロケールを設定する仕組みが調べた限りでは無さそうなので、
仕方なくNSDateComponentに変換して日付で比較することにした。
NSDateComponentは実行環境のロケールに従った日付に変換するようだ。

2011年2月18日金曜日

NSDateでout of scope

まだObjective-Cに馴染めてません。。
メモだ、メモ。

インスタンス変数にNSDate型のものがあって
hoge = [NSDate date];
として別の場所で参照するとout of scopeとなって不正アクセスになってしまう。
dateメソッドでは参照カウンタが加算されていないため、[[NSDate date] retain]とする必要がある。

2010年12月26日日曜日

「base sdk missing」と「code sign error」

XCodeでiPhoneアプリを試してみようと思い、SampleのHelloworldをダウンロードしてビルドしようとすると「base sdk missing」と言われる。
環境はiOS SDK4.2。
ググって解決。

Xcodeで「base sdk missing」と表示されたときの対処方法


でも「code sign error」と出てる。
ググっても解決しないので試行錯誤。

1) 左側ペインの「グループとファイル」から「Resources」の下にある「Info.plist」を選択
2) コンテントペインにアプリケーションの情報が表示されるので「Bundle creator OS Type code」の表示を確認する
3) 「???」になっていたら削除してブランクにする
4) クリーンしてからビルド

で、うまくいきました。