最初のアプローチは、オブジェクトをコピーします(<NSCopying>
プロトコルに準拠している場合)。つまり、古いインスタンスと論理的に同等のオブジェクトの新しいインスタンスを作成します。2つのオブジェクトは、メモリ内の異なる場所に配置されます。
+----------+ +---------------------------------------------+
| Object 1 | | Copy of object 1, with identical properties |
+----------+ +---------------------------------------------+
^ ^
| |
"object" "object2"
object
2行目は、ポインタを変数に割り当てるだけですobject2
。新しいインスタンスは作成されません。ポインタはまったく同じオブジェクトを指します。
+--------+
| Object |
+--------+
^ ^
| +--------------+
"object" "object2"
object = nilの場合、違いは表示されますか?
いいえ、それ以降、両方の変数は次のようになりますnil
(nil
Obejctive-Cでのメッセージは常にnil
または0になります)。
コピー方法を正しく使用するのはいつですか?
既存のオブジェクトを複製する必要がある場合、たとえば、元のオブジェクトに影響を与えずにオブジェクトの一部のプロパティを変更する場合。