いつもお世話になっております。

1つのインスタンスにてプロパティを編集し、処理前後でそのプロパティを比較したいと考えております。

変数コピーは値型なのでインスタンスを2つの変数にコピーし見比べようと思いました。
ですがどうやらポインター自体をコピーするようで、処理前後で同じ値となってしまいました。
解決方法をご教授頂けると幸いです。

そのプロパティを変数コピーし退避すればできそうですが、プロパティ数が多くインスタンスごと管理できたら楽と思いました。

何卒よろしくお願い致します。

サンプルコード

class A {
    var p = "abc"
}
var origin: A = A()
let keep = origin
origin.p = "123"
print(origin.p)  // 123
print(keep.p)    // 123(こっちも処理が反映されてしまった!!)