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]とする必要がある。

2011年2月12日土曜日

正しい日本語?

「正しい日本語を話しなさい」とおじさんは言う(おじさんでなくても言うことがある)。
最近はあまり見ないが、新聞の投稿欄にはいる。
新聞の投稿欄にはなにか理解を超えた生態系が存在しているようだ。
彼らの言う正しい日本語とは何だろうか。
広辞苑に載っている日本語だろうか。

平安時代の日本語で話されたら、何を言っているのかさっぱり分からないだろう。
これは正しい日本語なのだろうか。
また、日本語は中国からの影響を強く受けている。
どこからが日本語でどこからが漢語なのだろう。
「正しい日本語」に漢語の影響を受けたコトバは含まれているのだろうか。

若者には若者が、女性には女性が、特定のカテゴリの技術者にはその分野の技術者がそれぞれ進化させてきたコトバがある。それは彼らの間でのコミュニケーションでは十分に機能するものであって、彼らの会話が理解できない場合、それは多くのとき理解する必要がないケースである。
女子高生が意味の分からんコトバで会話していても、それはおっさんのために話しているわけではないのだから問題ないのだ。

いざそんな若者や女性や技術者と会話しなければならない状況があったとしよう。
そこで彼らが意味の分からないコトバを使う。
これは多くの場合、彼らに非があるだろう。
でもそれは彼らが「正しくない日本語」を使っているからではない。
相手に応じたコトバを選ばないという、コミュニケーション能力の問題である。
コミュニケーションの問題を「日本語の乱れ」という誤った問題にすり替えてしまうことで、別に問題でもないことを問題として考えてしまうことになる。
それはとっても無駄な時間だし、コミュニケーションの問題という本当の問題の解決にはさっぱり役立たない。