1

低レベルでのNSCodingとNSCopyingの本当の違いは何ですか?

また、それらは独立して、一緒に使用されることになっていますか、それともいつ使用するのが良いですか?

4

3 に答える 3

9
  • NSCopyingは、他の言語で呼ばれるものに最も近いものですclone()。つまり、既存のオブジェクトのカーボンコピーとして(機能的な)新しいオブジェクトをすぐに作成するために使用されます。

  • NSCodingは最も近いものserialize()/deserializeです。つまり、オブジェクトを、後でプログラムを再起動したときに永続的に保存して復活させることができる形式に変換するために使用されます。

ご覧のとおり、機能はあまり似ておらず、独立して使用できるはずです。

于 2013-01-16T22:22:43.193 に答える
2

どちらも問題のオブジェクトのコピーを作成しますが、それを行う方法は大きく異なります。

プロトコルは、実際には特定の機能セットを実装するための単なる約束です。NSCopyingの場合はそれであり-copyWithZone:、NSCodingの場合はそれとです。–initWithCoder:-encodeWithCoder:

NSCopyingは、オブジェクト(別の同一オブジェクト)のメモリ内コピーを作成するために使用されます。

NSCodingは、シリアル化された表現(NSDataオブジェクト)を作成するため、またはそのような表現からオブジェクトを作成するために使用されます。

于 2013-01-16T22:22:53.567 に答える
1

NSCodingは、オブジェクトをディスクにシリアル化することです。

NSCopyingは、(メモリ内で)コピー可能であることを意味します。

于 2013-01-16T22:22:57.653 に答える