Apple のドキュメントを見て、Cocoa のデザイン パターンを読んで混乱しています。の Apple ドキュメントにはcopyWithZone:
、次のように書かれています。
このメソッドが存在するのは、NSCopying プロトコルに準拠するオブジェクトが必要な状況でクラス オブジェクトを使用できるようにするためです。たとえば、このメソッドを使用すると、クラス オブジェクトを NSDictionary オブジェクトのキーとして使用できます。このメソッドをオーバーライドしないでください。
それは次のcopy
とおりです。
これは、NSCopying プロトコルを採用するクラスの便利なメソッドです。copyWithZone: の実装がない場合、例外が発生します。
NSObject 自体は NSCopying プロトコルをサポートしていません。サブクラスはプロトコルをサポートし、copyWithZone: メソッドを実装する必要があります。copyWithZone: メソッドのサブクラス バージョンは、サブクラスが NSObject から直接派生しない限り、最初にメッセージをスーパーに送信してその実装を組み込む必要があります。
Cocoa デザイン パターンの例では、プロトコルに準拠している場合はオーバーライドしますが、オーバーライドcopyWithZone:
しmutableCopyWithZone:
ません。カスタムサブクラスをキーとして 使用したい場合、それは私がすべきことですか?copy
NSCopying
NSDictionary
または、オーバーライドしますcopy
か?
同様に、私がそうする場合、それは私のカスタムサブクラス[myClass copy]
を呼び出しますcopyWithZone:
か? copy
ありがとう。