私は車のクラスがあります。車がジャンクヤードに行くと、この車はもはや人口全体ではカウントされないはずです。私はデイニット機能を持っていますが、車の人口から車を体系的に取り除くにはどうすればいいですか?言い換えれば、デイナイトをどのようにして有効にするのですか?デイナイトをスウィフトで効果を発揮する方法
私はクラス変数isJunk
を持っていますが、それを使ってこの作業を行う方法はわかりません。
class Car {
static var population: Int = 0
var isJunk: Bool = false
var color: String
var capacity: Int
var driver: Bool?
var carOn: Bool = false
init (carColor: String, carCapacity: Int) {
self.capacity = carCapacity
self.color = carColor
Car.population += 1
}
deinit {
Car.population -= 1
}
func startCar() {
self.carOn = true
}
}
Isjunkは何もしません。オブジェクトの初期化が解除されると、そのポインタは失われ、使用できなくなります。オブジェクトをガベージコレクションに送る最も簡単な方法は、そのオブジェクトへのすべての参照をnilに設定することだけです。自動参照カウントは残りを行います。 –
@Philip Feldmann:Xcodeには**ガベージコレクション**はありません。ちょうどARC –
あなたは正しいですが、ただのARCだけですが、すべての参照がnilの場合、ARCはオブジェクトを破棄し、deinitが呼び出されます。それが呼び出されていない場合は、漏れがあります。 – Feldur