- copyWithZone:
Overview 概要
The exact meaning of “copy” can vary from class to class, but a copy must be a functionally independent object with values identical to the original at the time the copy was made. A copy produced with NSCopying
is implicitly retained by the sender, who is responsible for releasing it.
“複製” の正確に意味するところはクラスによって様々です、しかしある複製はその複製が作成された時での元のものと同一の値を持つ機能的に独立したオブジェクトでなければなりません。NSCopying
で生成される複製は、それを解放する責任を持つ送り手によって暗黙的に保有されます。
NSCopying
declares one method, copy
, but copying is commonly invoked with the convenience method copy
. The copy
method is defined for all objects inheriting from NSObject
and simply invokes copy
with the default zone.
NSCopying
は1つのメソッド、copy
を宣言します、しかしコピー作業は一般に便宜メソッドcopy
で発動されます。copy
メソッドは、NSObject
から継承するすべてのオブジェクトに対して定義されます、そして単にcopy
を省略時のゾーンで発動します。
Your options for implementing this protocol are as follows: このプロトコルを実装するためのあなたの選択肢は、次のとおりです:
Implement
NSCopying
usingalloc
andinit...
in classes that don’t inheritcopy
.With Zone: NSCopying
を、alloc
とinit...
を使ってcopy
から継承しないクラスにおいて実装してください。With Zone: Implement
NSCopying
by invoking the superclass’scopy
whenWith Zone: NSCopying
behavior is inherited. If the superclass implementation might use theNSCopy
function, make explicit assignments to pointer instance variables for retained objects.Object NSCopying
を、スーパークラスの持つcopy
を発動することで実装してください、With Zone: NSCopying
挙動が継承される場合は。スーパークラス実装がNSCopy
関数を使うかもしれないならば、保有されるオブジェクトのためのポインタインスタンス変数に対して明示的な割り当てをしてください。Object Implement
NSCopying
by retaining the original instead of creating a new copy when the class and its contents are immutable.NSCopying
を、新しい複製を作成する代わりに、元のものを保有することによって実装してください、クラスとそれの内容が不変である場合は。
If a subclass inherits NSCopying
from its superclass and declares additional instance variables, the subclass has to override copy
to properly handle its own instance variables, invoking the superclass’s implementation first.
サブクラスがNSCopying
をそれのスーパークラスから継承してそして追加のインスタンス変数を宣言するならば、サブクラスはcopy
をオーバーライドすることで、スーパークラスの持つ実装を最初に発動して、適切にそれ自身のインスタンス変数を取り扱わなければなりません。