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