次の例では、localVariable
のスコープは何ですか?グローバル配列に追加されるローカル変数の有効範囲は何ですか?
anArray[0] === localVariable
のオブジェクトはありますか? は、Example
がスコープから外れるまで持続します(構築されている場所から)。それはいくつかの他の変数/配列/セット/に追加されない限り
class Example {
var anArray: [DataClass] = []
init() {
let localVariable = DataClass()
anArray.append(localVariable)
}
}
class DataClass { }
初期化子の終了後にlocalVariableは存在しなくなります。しかし、その値はまだanArrayの内部に保持されています。 DataClassのインスタンスは、もう誰もそれを参照しなくなったときにのみ割り当てが解除されます。つまり、Exampleインスタンスが割り当て解除されるとすぐにDataClassも解放されます(外部からanArrayにアクセスしてその値を取得しない場合) – luk2302
あなたが遭遇する問題?問題がありますか、あなただけが興味がありますか? – Jelle
@ luk2302あなたは正しいと思いますが、「価値」についてのあなたの言葉は私に関係しています。それはクラスなので、オブジェクトへの実際の参照がコピーされると思います。 – sdasdadas