2005.04.10 Sunday
ファイルパスの初歩的な間違い
|
Cocoa系のAPIでは問題ないのだが、CF,CG系のAPIなどではファイルパスの書き方でよく初歩的なミスをする。(いや自分だけかもしれないので、忘れないように書いておこう)
例えばNSStringを用いて以下のようなAPI(CGDataをファイルパスから呼び出す関数)を用いる時 CGDataProviderRef CGDataProviderCreateWithFilename(const char *filename); 何も考えず CGDataProviderRef aCGDataRef; aCGDataRef = CGDataProviderCreateWithFilename([ filePath cString ]); とよくやってしまう。確かにこれでもエラーはでないし、型的には確かにあっているが、OSXのファイルシステムのファイル名はUTF-8が基本なので正確には CGDataProviderRef aCGDataRef; aCGDataRef = CGDataProviderCreateWithFilename([ filePath UTF8String ]); としなくてはいけない。上の例ではファイルパスが全てASCII文字列なら問題ないが、パス名に日本語などが入ると全然受け付けない。と、自分も読めるパスと、読めないパスがあるというバグでようやく気づいた、情けない単純ミス(笑) |
||



![たのしいCocoaプログラミング[Leopard対応版]](http://ecx.images-amazon.com/images/I/31jKj%2BBWJIL._SL160_.jpg)

結果的にUTF8Stringと同じですけど。