私は、クラスタイプがSwiftのリファレンスタイプであることを研究しました。Swift 3リファレンスタイプとメモリ管理
ので、例えば、私は次の文があります、++
SomeDefinedClass *ptrA = new SomeDefinedClass(10, 10);
SomeDefinedClass *ptrB = new SomeDefinedClass(30, 30);
// (ptrA->x, ptrA->y) == (10, 10)
// (ptrB->x, ptrB->y) == (30, 30)
ptrB = ptrA;
ptrB->x = 50;
ptrB->y = 50;
// (ptrA->x, ptrA->y) == (50, 50) due to both ptrA and ptrB
// point to the same object in the memory
しかし、Cでポインタ代入のこの種:
class Rectangle {
var x: Int
var y: Int
}
var a = Rectangle(x: 10, y: 10)
var b = Rectangle(x: 30, y: 30)
// (a.x, a.y) == (10, 10) and (b.x, b.y) == (30, 30)
b = a
b.x = 50
b.y = 50
// (a.x, a.y) == (50, 50) due to both instance a and b
// refer to the same piece in the memory
私は、この動作は、例えば、C++のポインタに似ていると思います(= PTRA ptrB)は
delete ptrB;
Bなし メモリリークを引き起こす可能性がEFORE
ptrB = ptrA;
私が学んチュートリアルでは、これを言及 が、私は次のようにスウィフトは、いくつかの動作を行うことができるとは思わなかった「ptrBを削除します。」自動的に 私はこれを処理する必要はありません、右か?
ありがとうございます! – Nestarneal