ほとんどすべての場合で、plistファイルに構文上の問題はないはずです。plistデータをロードおよび保存するためのAppleの機能は、多くの注目を集め、多くの用途があります。ほぼすべてのバグが確実に発見され、修正されています。
(plistは、ドラッグアンドドロップやクリップボード、アプリを起動するためのサンドボックスのアクセス許可、すべてのアプリのユーザーインターフェイス、Finderに表示するアイコンなど、あらゆる種類のものに使用されることを考慮してください。 plistを作成するコードにバグがあり、たまたま一部のアプリの設定ファイルを台無しにしてしまったが、他のアプリでは失敗しなかった!)
アプリの設定ファイル(plist)は、メモリ内のデータ構造の一部をディスクに格納するだけです。したがって、アプリに何かが正しく設定されない原因となるバグがある場合、アプリは保存されます。
多くの場合、アプリが不正な動作を始めたら、単に終了して再起動するだけです。これで多くの部分がリセットされ、問題が解決する可能性があります。ただし、設定ファイルはディスクから再読み込みされるため、アプリの影響を受ける部分が永続的な設定で保存されている場合、アプリを再起動しても影響はありません。不正な値が再度読み込まれるだけです。これは、設定ファイルを削除することが役立つ場合です。それはアプリを再起動するようなものですが、保存されたもののためのものです。
これらのことは、プログラマが自分のアプリが持っているデータが正しいと想定しているために起こります。ユーザーが標準のカラーホイールコントロールをクリックすることによってのみ色を選択できる場合、おそらくそれを使用する前に、色が正しいことを確認するための追加の作業は行いません。(比較すると、Safariのようなアプリはありませんトン、それをロードして実行ファイルを直接インターネットオフするので、すべてを検証する余分な作業のを。)
利点は、ほとんど常に正しいことであり、内部の値が正しいと仮定すると、はるかに簡単です。悪い点は、悪い値が何らかの形で忍び込んだ場合(ユーザーがまったく予期しないことをした場合など)、すべてがリセットされるまで事態が混乱する可能性があることです。
-writeToFile:atomically:YES
(「データはバックアップファイルに書き込まれ、エラーが発生しないと仮定して、バックアップファイルは指定した名前に変更されます」)。POSIXrename()
関数は、「システムが操作の途中でクラッシュした場合でも」ファイルが存在することを保証します。