ディレクトリの存在チェックを書いてコケた
アプリ内の領域に保存するため、ディレクトリを切ろうと以下のコードを書いたらコケた。
ちなみに、最初の1回は通って、2回目から(ディレクトリが作られてから)常にコケるようになった。
正しく書いた
よく見たり、サンプルあさったら致命的ミスが分かったので直した。
BOOL型のポインタを渡さねばならないところ、YESを置いてしまっていた。 (true--(アドレス評価)->0x1)
ファイルパスが存在した場合、isDirectory にセットされた変数にディレクトリかどうか書き込むらしい。 そこにYESなんてものが置いてあったせいで、アプリの領域外へ書き込もうとしてしまった模様。
1回目が通った理由は、パスが存在しなかった時点で処理が終了したからと思われる。
(それゆえか、BOOLポインタをただ置いたら、XcodeにNULL初期化を差し込まれた)
←これはCの常識と学習しました…初期化大事…(追記:2016/01/26)
まとめ
[[NSFileManager defaultManager] fileExistsAtPath: isDirectory:
のisDirectory:
に渡すのはBOOLポインタ!!- Xcodeのヒントよく見よう!!!
- 0x1へのアクセスとかC系列言語こわ!!!!