NSCoding プロトコルリファレンス 翻訳元
このページの最終更新:2010-02-10
ADCの最終更新:2009-11-17
ADCの最終更新:2009-11-17
準拠しているクラス | 様々なCocoaのクラス |
フレームワーク | /System/Library/Frameworks/Foundation.framework |
使用可能な環境 | Mac OS X v10.0以降 |
コンパニオンガイド | Archives and Serializations Programming Guide for Cocoa |
宣言ファイル | NSObject.h |
サンプルコード | iSpend QTQuartzPlayer SourceView Squiggles With and Without Bindings |
概観(Overview)
NSCodingプロトコルではインスタンスオブジェクトのエンコードとデコードをできるようにする為にクラスが実装する必要のある二つのメソッドを宣言しています。この機能はアーカイブ化(オブジェクトや構造体がディスクにストアされる場所)とディストリビューション(オブジェクトが異なるアドレス空間でコピーされる場所)の基礎を提供しています。
オブジェクト指向の設計方針を保つ為に、エンコードまたはデコードされたオブジェクトはそのインスタンス変数のエンコーディングとデコーディングをする責任があります。コーダはオブジェクトにencodeWithCoder:メソッドやinitWithCoder:メソッドを呼び出すことによってエンコード、デコードするよう伝えます。encodeWithCoder:メソッドは与えられたコーダにインスタンス変数をエンコードするよう指示します。このメソッドは一つのオブジェクトで何度でも呼び出すことができます。initWithCoder:メソッドは与えられたコーダからオブジェクト自身を初期化するよう指示します。そのため、このメソッドは他の初期化メソッドに取って代わり、一つのオブジェクトに一度ずつしか呼び出されません。コーディングすべきオブジェクトは全てNSCodingプロトコルに準拠し、これらのメソッドを実装しなくてはなりません。
コーダがサポートしている、アーカイブ化可能な型について熟考することが重要です。Mac OS X v10.2以降では、キー値アーカイブ化が推奨されています。詳細はArchives and Serializations Programming Guide for Cocoa?を参照してください。
オブジェクト指向の設計方針を保つ為に、エンコードまたはデコードされたオブジェクトはそのインスタンス変数のエンコーディングとデコーディングをする責任があります。コーダはオブジェクトにencodeWithCoder:メソッドやinitWithCoder:メソッドを呼び出すことによってエンコード、デコードするよう伝えます。encodeWithCoder:メソッドは与えられたコーダにインスタンス変数をエンコードするよう指示します。このメソッドは一つのオブジェクトで何度でも呼び出すことができます。initWithCoder:メソッドは与えられたコーダからオブジェクト自身を初期化するよう指示します。そのため、このメソッドは他の初期化メソッドに取って代わり、一つのオブジェクトに一度ずつしか呼び出されません。コーディングすべきオブジェクトは全てNSCodingプロトコルに準拠し、これらのメソッドを実装しなくてはなりません。
コーダがサポートしている、アーカイブ化可能な型について熟考することが重要です。Mac OS X v10.2以降では、キー値アーカイブ化が推奨されています。詳細はArchives and Serializations Programming Guide for Cocoa?を参照してください。
このクラスでできること(Tasks)
コーダでの初期化(Initializing with a Coder)
- initWithCoder: required method
コーダでのエンコーディング(Encoding with a Coder)
インスタンスメソッド
encodeWithCoder:
- encoder
- アーカイバオブジェクト。
使用可能な環境
- Mac OS X v10.0以降
宣言ファイル
- NSObject.h
initWithCoder:
- decoder
- アンアーカイバオブジェクト
戻り値
- decoderのデータで初期化されたself
使用可能な環境
- Mac OS X v10.0以降
サンプルコード
宣言ファイル
- NSObject.h