0

複数のオプションを使用してファイルデータを保存する次の方法があります。NSDataWritingAtomic と NSDataWritingFileProtectionComplete を組み合わせたいです。 | を使用する必要がありますか? NSData を書き込むときに 2 つのオプションを組み合わせる記号?

私が尋ねている理由は、デバイスにパスコードが設定されていない場合、NSDataWritingFileProtectionComplete は実際には機能しないはずですが、違いが見られないため、オプションを正しく設定する必要があるためです。

-(void)saveFileData:(NSData*)data
{
    NSError* error = nil;

   BOOL success = [data writeToFile:[self filepath] options:NSDataWritingAtomic|NSDataWritingFileProtectionComplete error:&error];

    if(success == NO || error != nil)
    {
        DLog(@"Error encrypting data file");
    }
}
4

1 に答える 1

0

はい、あなたはそれを正しくやっています。

NSDataWritingFileProtectionComplete最も制限的な保護クラスを使用してファイルを暗号化する必要があることを iOS に知らせます。デバイスにパスコードが設定されている場合、これは、デバイスがロック解除されている場合にのみファイルにアクセスできることを意味します。デバイスにパスコードがない場合、暗号化に使用するパスコードがないため、このような制限は適用されません。

FileProtection 関連のコードをテストするときは、デバイスがロックされているときに、保護されたファイルに引き続きアクセスできる短い猶予期間 (10 秒) があることに注意してください。これは、そのようなファイルを操作するアプリがバックグラウンド状態に正常に移行し、保留中の I/O を完了する機会を確保するために行われます。

于 2014-08-22T14:08:36.680 に答える