■浅いコピーと深いコピー
オブジェクトのポインタをコピーするshallow copyと、新たなメモリ領域を持つポインタを作る深いコピーdeep copyがある。ゾーンについて
copyWithZoneメソッドというようにゾーンは今も名残が残っている。動的なメモリ確保のヒープ領域はアドレス空間では幅広く使われたりしますが、空間的な局所参照性や仮想空間などアクセスが集中する系のデータの場合はある程度近い場所に配置したほうが効率が良くなります。
このヒープ領域をある程度区切って、関係の深いデータやオブジェクトはその区間=ゾーンを利用できるようにしていました。
現在はデフォルトゾーンでも十分効率化されているため殆ど明示的に使うことはなくなりました。^
コピーメソッドの定義
Objective-CのNSObjectにはcopyメソッドがあり、新しいインスタンスを作成できます。しかし、copyメソッドの実体はcopyWithZoneというインスタンスメソッドで、デフォルトゾーンに新たにインスタンスを作成します。
copyWithZoneはNSCopyingプロトコルで実装されてる。
■プロパティリスト
ASCII、XML,バイナリの3形式がある。プロパティリスト全体をNSDictionaryのインタンスに格納した時、これをルート辞書とよび、この辞書のキーは文字列でないと行けない。
ASCIIはOPENSTEPからの互換性のために存在し、このplistデータからオブジェクト構造を複合するには
propertyListメソッドを使用します。
バイナリデータ<16>と(配列)、辞書を合わせた形。