1

まず、NSCopyingを正しく理解したことを確認したい...

単純なNSObjectサブクラスをNSDictionaryのキーとして使用するには、NSCopyingプロトコルを実装する必要があります。コピーされたインスタンスのcopyWithZoneメソッドで、クラスの新しいインスタンスを割り当て/初期化し、そのプロパティをコピーされたインスタンスと同じになるように設定して、それを返す必要があります。

次に、NSDictionaryがインスタンス自体ではなく、追加されたインスタンスのコピーを使用するのはなぜですか?

4

2 に答える 2

3

サブクラスがオブジェクトの場合、サブクラスを実装する必要はありません。NSCopying通常、キーはNSStringsである必要があり、これはコピーされます。

于 2011-09-26T14:52:50.740 に答える
1
  1. カスタムクラスをコピー可能にする場合は、すべてのカスタムクラスにNSCopyingプロトコルを実装する必要があります
  2. 元のディクショナリに含まれているオブジェクトを変更する場合、そのコピーは変更の影響を受けないため、コピーを使用する必要があります
于 2011-09-26T14:56:33.010 に答える