初めてNSCopyingを実装しようとすると、私はNSZoneのsubletiesについての質問があります。この例では同じNSZoneを2回使用できますか?
- (id)copyWithZone:(NSZone *)zone {
MyClass *copy = [[[self class] allocWithZone:zone] init];
copy.array = [[self.array mutableCopyWithZone:zone] autorelease];
return copy;
}
を、私は二回NSZoneを使用しています:最初のオブジェクトを割り当てるし、再度割り当てるために配列のコピーこれは合法ですか?それは必要ですか?私はmutableCopyを単純に行うことができます。また、-initWithArray:copyItems:を代わりに使用する方法も検討しています。
どのような方法が最適ですか? 「結果の配列のオブジェクトを浅いか深いコピーにする必要がありますか?」という質問に自由にどうぞ。私の鍵は、NSZoneを2回使用するのが安全かどうかです。
こんにちは、あなたが正しいことは間違いありません、ありがとうございます。これがNSCopyingにどのような影響を与えるかを詳しく教えてください。私は以前よりももっと混乱しています。 NSCopyingに準拠する理由は、[aDictionary setObject:x forKey:myNSCopyingObject]と言うことができるためです。あなたがNSZoneについて何を言っているのかは、プロトコルに正しく従う方法に疑問を投げかけます。明らかに私はアップルのテンプレートから始めました。彼らは明らかに更新していません。 – SG1
@ SG1:元のオブジェクトを作成する場合と同じです。ゾーンは少なくとも公称で使用することができます(ゾーンは実際には何もしません)。または、ゾーンが存在しないようにして、実装内で 'alloc' /' copy'/'mutableCopy'を使用してください。あなたの選択。 –