0
いつ使うのですか?辞書のすべてのキー対keyEnumerator?
辞書をループしてキー値を削除すると、列挙子はそれに対応しますか?あなたはあなたのコードが 列挙中にエントリを変更するべきではありません、 NSDictionaryの可変のサブクラスのインスタンスでこのメソッドを使用する場合は
:ドキュメントは、その質問に答えているようです。エントリを変更する場合は、allKeys プロパティを使用して、辞書のキーのスナップショットを作成します。次に、 このスナップショットを使用してエントリをトラバースし、途中で変更します。
パフォーマンスは、人々が常に知りたいからです。
を持つ配列の必要がない場合keyEnumerator'はない 'ながら' allKeys'は 'NSArray'を作成します。そこでそこでは最適化が行われます。だから、 'keys'(単純な' NSString'だけでなく大きなもの)がたくさんある場合、 'keyEnumerator'が好きです。そうでなければ、デバイスはかなり性能があり、大きな問題ではありません(違いが気付かないかもしれません)。 – Larme
配列内の個々のオブジェクトのサイズは関係ありません。 'NSArray'はそれに追加されたオブジェクトをコピーしないので、' allKeys'によって返された配列は元のキーオブジェクトへのポインタを持っています。 – Avi