NS(Mutable)Dictionariesでキーとして使用されるすべてのオブジェクトは、NSCopyingプロトコルをサポートする必要があり、それらのオブジェクトは、ディクショナリで使用されるときにコピーされます。
あるオブジェクトを別のオブジェクトにマップするために、より重いオブジェクトをキーとして使用したいことがよくあります。私がそれをするとき私が本当に意味することは効果的にです:
[dictionary setObject:someObject forKey:[NSValue valueWithPointer:keyObject]];
(「戻ってきて、この同じキーオブジェクトインスタンスをもう一度渡したら、同じ値を取得してください。」)
...これはまさに私が時々このデザインを回避するためにやることになることです。(はい、デスクトップCocoaのNSMapTableについては知っていますが、たとえばiPhoneはこれをサポートしていません。)
しかし、私が実際に得ていないのは、そもそもなぜキーをコピーすることが必要または望ましいのかということです。実装または呼び出し元は何を購入しますか?