ファイルを保存するときに保存する場所のパスを求めるのに CCFileUtils::getWriteablePath を使用することはよくあると思います。iOS, Android など OS に応じて適切なパスを返してくれるので重宝します。
ただ、iOS では気をつけないとリジェクトされる可能性があります。

iCloud がリリースされてからアップルのガイドラインが変更されて、ユーザが作成したコンテンツ(UGC)でないものをアプリの Documents 以下に保存しているとリジェクトされてしまいます。これは iCloud のバックアップ対象が Documents も含まれているため、バックアップ容量を減らすための処置のようです。ダウンロードしたファイルやキャッシュなどを Documents 以下に保存していると引っかかります。SQLite のファイルもダメです。

このようなファイルは Libries/Cache 以下に保存しなければいけないのですが、前述の CCFileUtils::getWriteablePath メソッドを iOS で使用すると Documents のパスを返します。

自分で Libraries/Cache のパスを取得してもいいのですが、Android などの対応もワンソースでやりたいので、CCFileUtils::getWriteablePath を以下のように修正して対応しました。(作成しているアプリが UGC を保存することがないので)

std::string CCFileUtils::getWriteablePath()
{
    // save to document folder
    // 下記行を NSCachesDirectory に変更
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    std::string strRet = [documentsDirectory UTF8String];
    strRet.append("/");
    return strRet;
}

関連する投稿