NSCopying
継承:なし
従属:なし
フレームワーク:OS X 10.0 以降の Foundation。関連項目
概要
NSCopying プロトコルは、オブジェクトの機能的コピーを提供するためのメソッドを宣言します。"コピー" の正確な意味は、クラスによって変わりますが、コピーは、コピーが行われた時点で、元と同じ値を持つ機能的に独立したオブジェクトでなければなりません。NSCopying で生成されたコピーは、暗黙のうちに送信者によって保持され、それを解放する責任があります。
NSCopying は一つのメソッド、copyWithZone: を宣言しますが、コピーは、一般的にコンビニエンスメソッド copy で呼び出されます。copy メソッドは、NSObject から継承するすべてのオブジェクトに対して定義され、単純にデフォルトのゾーンで copyWithZone: を呼び出します。
次のようにこのプロトコルを実装するためのオプションがあります:
- copyWithZone: を継承しないクラスでは alloc と init... を使用して NSCopying を実装して下さい。
- NSCopying の動作が継承されている時、スーパークラスの copyWithZone: を呼び出すことによって NSCopying を実装して下さい。スーパークラスの実装は NSCopyObject 機能を使用する可能性がある場合は、保持するオブジェクトのインスタンス変数をポインタに明示的な割り当てを行います。
- クラスとその内容が不変であるときに新しいコピーを作成する代わりに、オリジナルを保持することで NSCopying を実装します。
サブクラスが、そのスーパークラスから NSCopying を継承し、追加のインスタンス変数を宣言している場合、サブクラスは最初のスーパークラスの実装を呼び出し、独自のインスタンス変数を処理するために copyWithZone: をオーバーライドしなければなりません。
タスク
コピー
- copyWithZone: 必須
受信者のコピーである新しいインスタンスを返します。
宣言
<< SWIFT >>
func copyWithZone(_ zone: NSZone) -> AnyObject << OBJECTIVE-C >> - (id)copyWithZone:(NSZone *)zone
パラメーター
zone | このパラメーターは無視されます。メモリーゾーンはもはや Objective-C では使われません。 |
議論
返されたオブジェクトは、それを解放する責任がある送信者によって暗黙的に保持されます。"可変対不変" は、受信オブジェクトに適用された場合、返されるコピーは不変です。そうでない場合は、コピーの正確な性質は、クラスによって決定されます。
利用可能
OS X 10.0 以降で利用可能。
NSMutableCopying.html
以下も見よ
– mutableCopyWithZone: (NSMutableCopying protocol)
– copy (NSObject class)
次:文書改定履歴