NSCoding
継承:なし
従属:なし
フレームワーク:OS X 10.0 以降の Foundation。関連項目
概要
NSCoding プロトコルは、そのクラスのインスタンスをコード化および復号できるようにクラスが実装しなければならない 2 つのメソッドを宣言します。この機能は、(オブジェクトおよびその他の構造体がディスク上に保存される) アーカイブ用および (オブジェクトが異なるアドレス空間にコピーされる) 配布のための基礎を提供します。
オブジェクト指向デザイン原理と一致して、符号化し、復号化するオブジェクトは、そのインスタンス変数をコード化又は復号化する責任があります。コーダーは encodeWithCoder: や initWithCoder: を呼び出すことによりそうするようにオブジェクトに指示します。encodeWithCoder: は、提供されるコーダーにそのインスタンス変数をコード化するようにオブジェクトに指示します。オブジェクトは、このメソッドを何回でも受けることができます。initWithCoder: は、提供されるコーダのデータから自分自身を初期化するように、オブジェクトに指示します。このように、それは他の初期化メソッドを置き換え、オブジェクトごとに一度だけ送信されます。コード可能でなければならない全てのオブジェクトクラスは、NSCoding プロトコルを採用し、そのメソッドを実装する必要があります。
コーダーがサポートするアーカイブの可能なタイプを考慮することが重要です。OS X のバージョン 10.2 以降では、キー付きアーカイブが好まれます。しかし、古典的なアーカイブをサポートする必要があるかもしれません。詳細については、アーカイブおよびシリアル化・プログラミング・ガイド を参照してください。
タスク
コーダーでの初期化
- initWithCoder: 必須
与えられた脱アーカイバーのデータから初期化されたオブジェクトを返します。
宣言
<< SWIFT >>
init?(coder aDecoder: NSCoder) << OBJECTIVE-C >> - (instancetype)initWithCoder:(NSCoder *)decoder
パラメーター
decoder | 脱アーカイバーオブジェクト。 |
戻り値
decoder 内のデータを使用して初期化したself。
議論
initWithCoder からは self を必ず返さなければなりません。復号後の異なるオブジェクトを代入する必要がある、高度な必要性がある場合は、awakeAfterUsingCoder: で行うことができます。
利用可能
OS X 10.0 以降で利用可能。
コーダーでのコード化
- encodeWithCoder:
与えられたアーカイバを使用して、受信者をコード化します。
宣言
<< SWIFT >>
func encodeWithCoder(_ aCoder: NSCoder) << OBJECTIVE-C >> - (void)encodeWithCoder:(NSCoder *)encoder
パラメーター
encoder | アーカイバオブジェクト。 |
次:文書改定履歴