私はイミュータブル コレクション (主に Clojure で、それらを「永続的なデータ構造」と呼んでいます) を使用することにややハマっており、iOS および OS X のいくつかのコンテキストでこの方法でプログラミングできるようになりたいと思っています。
これが役立つ主な例は、変更されたコピーを作成することによって辞書を「変更」できるようにすることであり、変更を次のように体系化しようとするのではなく、変更リスナーが古い値と新しい値の違いを照会できるようにすることです。プロパティ変更イベント。不変データ構造は、並行プログラミングのゲームチェンジャーでもあります。ロックは必要ありません。
NSArray
はい、現在は不変のインスタンスとインスタンスを使用してこれを行うことができますがNSDictionary
、コレクションがますます大きくなったり、頻繁に変更を加えたりするため、それらをコピーして「変更された」バージョンを作成するのはますます非効率的になります。大きなデータ構造への小さな変更とてつもない量の仕事を伴う。
Objective-C で不変データ プログラミングを有効にする方法を探しています。これがどのように見えるかを明確にし、それが提供する利点のいくつかを明確にするために、この SO の質問で参照されている Phil Bagwell による研究は非常に関連性があります。