「NSCopying Protocol Reference」の編集履歴(バックアップ)一覧はこちら
「NSCopying Protocol Reference」(2010/02/06 (土) 23:40:51) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
//0.下はいじらない
Tags:&tags()
//1.以下に続けてADCでの分類を書き込みリンクする。「NSHogeのクラスリファレンス」、まで書く
&link_toppage(トップ) > [[リファレンス]] > Core Services Layer > Foundation > NSCopying プロトコルリファレンス
//2.リファレンス日本語名を見出し1で書く。wiki内のリンクで用いられるタイトルになる。翻訳元にもリンクする。
*NSCopying プロトコルリファレンス [[翻訳元>http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSCopying_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSCopying]]
//3.翻訳元の最終更新日を書く
このページの最終更新:&date()
ADCの最終更新:2006-05-23
//4.以下、用語は頻繁に出てくる単語の翻訳ガイドラインを参照しながら翻訳する。
//5.ある程度書き終わったらタグ(未完または完成、カテゴリ名×3)をつけて下線を引く(広告との境)。これで終了。それではGood Luck!
//本文開始↓
|BGCOLOR(#eef):準拠しているクラス|BGCOLOR(#eef):様々なCocoaのクラス|
|フレームワーク|/System/Library/Frameworks/Foundation.framework|
|BGCOLOR(#eef):使用可能な環境|BGCOLOR(#eef):Mac OS X v10.0以降|
|コンパニオンガイド|Memory Management Programming Guide for Cocoa|
|BGCOLOR(#eef):宣言ファイル|BGCOLOR(#eef):NSObject.h|
|サンプルコード|CoreRecipes&br()GeekGameBoard&br()Sketch+Accessibility&br()Sketch-112&br()SourceView|
**概観(Overview)
NSCopyingプロトコルは、実用的なオブジェクトの複製の為のメソッドを宣言しています。正確には「複製」の意味はクラスによって異なりますが、複製されたオブジェクトは作られた時に元のオブジェクトと全く同じ値を持ち、独立した有効なオブジェクトでなければなりません。NSCopyingプロトコルによって生成された複製は、暗黙のうちに送信者に保持され、送信者はそれを解放する責任があります。
NSCopyingプロトコルではcopyWithZone:の一つのメソッドを宣言していますが、通常複製のときはコンビニエンスメソッドであるcopyを呼び出します。copyメソッドはNSObjectを継承する全てのオブジェクトで定義され、単純にcopyWithZone:メソッドをデフォルトゾーンで呼び出します。
このプロトコルを実装する方法には以下のような選択肢があります。
- copyWithZone:メソッドを継承していないクラスでNSCopyingをallocメソッドとinit...メソッドを使って実装します。
- NSCopyingの動作を継承しているときにはスーパークラスのcopyWithZone:メソッドを呼び出すことで実装します。スーパークラスの実装でNSCopyObject関数を使っている可能性がある場合、ポインタのインスタンス変数が保持されたオブジェクトに割り当てられていることを明確にしてください。
- クラスやコンテンツが不変であるときには、新しく複製を作る代わりに、オリジナルのオブジェクトを保持することによってNSCopyingを実装します。
スーパークラスからNSCopyingを継承しているサブクラスが追加のインスタンス変数を宣言している場合、サブクラスは自信のインスタンス変数を適切に操作する為にcopyWithZone:メソッドをオーバーライドする必要があります。その場合、スーパークラスの実装を最初に呼び出してください。
----
**このクラスでできること(Tasks)
***複製(Copying)
- copyWithZone: required method
----
**インスタンスメソッド
オブジェクトを複製して新しいインスタンスを返します。
- (id)copyWithZone:(NSZone *)zone
パラメータ
- zone
-- 新しいインスタンスを確保するメモリ領域を識別するゾーンです。ゾーンがNULLであれば、新たなインスタンスはNSDefaultZone関数の戻り値であるデフォルトのゾーンに確保されます。
解説
- 返されたオブジェクトは呼び出し元によって保持され、呼び出し元はオブジェクトを解放する責任があります。「不変対可変」の考察を受信側に当てはめれば、複製は不変オブジェクトです。ただし、オブジェクトの正確な本質はクラスが決定します。
使用可能な条件
- Mac OS X v10.0以降
関連項目
- - mutableCopyWithZone: ([[NSMutableCopying Protocol> NSMutableCopying Protocol Reference]])
- - copy ([[NSObject Class>NSObject Class Reference]])
宣言ファイル
- NSObject.h
----
----
//0.下はいじらない
Tags:&tags()
//1.以下に続けてADCでの分類を書き込みリンクする。「NSHogeのクラスリファレンス」、まで書く
&link_toppage(トップ) > [[リファレンス]] > Core Services Layer > Foundation > NSCopying プロトコルリファレンス
//2.リファレンス日本語名を見出し1で書く。wiki内のリンクで用いられるタイトルになる。翻訳元にもリンクする。
*NSCopying プロトコルリファレンス [[翻訳元>http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSCopying_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSCopying]]
//3.翻訳元の最終更新日を書く
このページの最終更新:&date()
ADCの最終更新:2006-05-23
//4.以下、用語は頻繁に出てくる単語の翻訳ガイドラインを参照しながら翻訳する。
//5.ある程度書き終わったらタグ(未完または完成、カテゴリ名×3)をつけて下線を引く(広告との境)。これで終了。それではGood Luck!
//本文開始↓
|BGCOLOR(#eef):準拠しているクラス|BGCOLOR(#eef):様々なCocoaのクラス|
|フレームワーク|/System/Library/Frameworks/Foundation.framework|
|BGCOLOR(#eef):使用可能な環境|BGCOLOR(#eef):Mac OS X v10.0以降|
|コンパニオンガイド|Memory Management Programming Guide for Cocoa|
|BGCOLOR(#eef):宣言ファイル|BGCOLOR(#eef):NSObject.h|
|サンプルコード|CoreRecipes&br()GeekGameBoard&br()Sketch+Accessibility&br()Sketch-112&br()SourceView|
**概観(Overview)
----
NSCopyingプロトコルは、実用的なオブジェクトの複製の為のメソッドを宣言しています。正確には「複製」の意味はクラスによって異なりますが、複製されたオブジェクトは作られた時に元のオブジェクトと全く同じ値を持ち、独立した有効なオブジェクトでなければなりません。NSCopyingプロトコルによって生成された複製は、暗黙のうちに送信者に保持され、送信者はそれを解放する責任があります。
NSCopyingプロトコルでは&link_anchor(copyWithZone:){copyWithZone:}の一つのメソッドを宣言していますが、通常複製のときはコンビニエンスメソッドである[[copy]]メソッドを呼び出します。[[copy]]メソッドはNSObjectを継承する全てのオブジェクトで定義され、単純に&link_anchor(copyWithZone:){copyWithZone:}メソッドをデフォルトゾーンで呼び出します。
このプロトコルを実装する方法には以下のような選択肢があります。
- &link_anchor(copyWithZone:){copyWithZone:}メソッドを継承していないクラスでNSCopyingを[[alloc]]メソッドとinit...メソッドを使って実装します。
- NSCopyingの動作を継承しているときにはスーパークラスの&link_anchor(copyWithZone:){copyWithZone:}メソッドを呼び出すことで実装します。スーパークラスの実装でNSCopyObject関数を使っている可能性がある場合、ポインタのインスタンス変数が保持されたオブジェクトに割り当てられていることを明確にしてください。
- クラスやコンテンツが不変であるときには、新しく複製を作る代わりに、オリジナルのオブジェクトを保持することによってNSCopyingを実装します。
スーパークラスからNSCopyingを継承しているサブクラスが追加のインスタンス変数を宣言している場合、サブクラスは自信のインスタンス変数を適切に操作する為に&link_anchor(copyWithZone:){copyWithZone:}メソッドをオーバーライドする必要があります。その場合、スーパークラスの実装を最初に呼び出してください。
**このクラスでできること(Tasks)
----
***複製(Copying)
&space(4)&link_anchor(copyWithZone:){- copyWithZone:} required method
**インスタンスメソッド
----
***&anchor(option=nolink, copyWithZone:) {copyWithZone:}
オブジェクトを複製して新しいインスタンスを返します。
- (id)copyWithZone:(NSZone *)zone
パラメータ
- zone
-- 新しいインスタンスを確保するメモリ領域を識別するゾーンです。ゾーンがNULLであれば、新たなインスタンスはNSDefaultZone関数の戻り値であるデフォルトのゾーンに確保されます。
解説
- 返されたオブジェクトは呼び出し元によって保持され、呼び出し元はオブジェクトを解放する責任があります。「不変対可変」の考察を受信側に当てはめれば、複製は不変オブジェクトです。ただし、オブジェクトの正確な本質はクラスが決定します。
使用可能な条件
- Mac OS X v10.0以降
関連項目
- [[- mutableCopyWithZone:]] ([[NSMutableCopying Protocol> NSMutableCopying Protocol Reference]])
- [[- copy]] ([[NSObject Class>NSObject Class Reference]])
宣言ファイル
- NSObject.h
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: