NSLogで日本語が表示できない

なんだか、このところコーディング中にXcodeで意味不明なバグが多いような気がしてます。

環境・設定依存なのかもしれませんが、私の環境はこちらです。 Xcode 4.3.2(4E2002) Mac OS 10.7.3 (XcodeのエンコーディングはUTF-8にしています。)

NSLogで日本語バグ

まずはじめはNSLogが日本語を通してくれない。

ただ日本語が文字化けしてしまうだけならよくあることですが、それだけじゃないんです。 例えば、日本語文字列が5個はいっているNSArrayについて、こんな風にデバッグログをだそうとします。

  for( Card* card in cardsArray){
    NSLog(@"card name is %@",card.name);
    // ここでいろいろ処理
  }

普通はこんな感じ↓になるはずですよね。

card name is あさり
card name is すずき
card name is たい
card name is さざえ
card name is くらげ

それがこんな感じ↓で、ただ文字化けするだけでなく、5行表示されなくてはいけないところが3行になっていて、要素数さえ正しく表示されません。

card name is 溘ヰ繧ォ
card name is 襍キ縺
card name is 溘ヰ繧ォ

日本語が入っていない文字列の場合には問題なくログ出力されるんですが……。 日本語が入っている場合にはNSLogを使わずにUIAlertViewやUILabelを使って内容を確認すると問題ないんですけど、面倒くさいですよね。

リソースをバンドルにコピーしてくれない

アプリで使う画像ファイルをプロジェクトに追加するときには、ファイルをプロジェクトウィンドウにDrag&Dropして追加しますよね。

ファイルを追加したらすぐソースコードから使えると思ったら、なぜか「ファイルがありません」エラーになってしまいました。 プロジェクトの設定を見てみたら、画像ファイルをNSBundleの中にコピーしてくれていませんでした。

同様に、h/mファイルを追加してもコンパイル対象にしてくれない。 なんでクラスのファイルが追加してあるのにリンクエラーが出るの?と思って設定を見てみたら、追加したファイルがコンパイル対象になっていない……。

で、実はインポートするときに、「ファイルをターゲットに追加する」設定がoffになっていました。 ただ、この設定は今までずっとデフォルトでonになっていたと思うんですよね。

どちらもわかってみればたいしたことがないバグなんですが、開発環境のバグってやる気をそがれちゃいます。 次バージョンではなおっているといいんですが。