Deinit方法永遠(yuǎn)不會(huì)被稱為 - Swift游樂場在下一個(gè)代碼中,我試圖調(diào)用deinit方法釋放對(duì)Person Class實(shí)例的所有引用,Mark但是deinit從不被調(diào)用。為什么?class Person{
let name:String
init(name:String){
self.name = name
println("Person created")
}
deinit {
println("Person \(name) deinit")
}}var Mark:Person? = Person(name:"Mark")Mark = nil // Shouldn't the person deinit method be called here? It doesn't.
2 回答

慕標(biāo)琳琳
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
Playgrounds
Swift的Xcode 不像常規(guī)應(yīng)用程序那樣工作; 他們不是只運(yùn)行一次。創(chuàng)建的對(duì)象保留在內(nèi)存中,可以檢查,直到您更改代碼,此時(shí)整個(gè)操場被重新評(píng)估。發(fā)生這種情況時(shí),所有先前的結(jié)果都將被丟棄,而所有對(duì)象都將被釋放,您將看不到任何輸出。
您的代碼是正確的,但Playgrounds不適合測(cè)試與內(nèi)存管理相關(guān)的內(nèi)容。

www說
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果像這樣創(chuàng)建對(duì)象,Deinit會(huì)調(diào)用
_ = Person(name:"Mark")
- 2 回答
- 0 關(guān)注
- 707 瀏覽
添加回答
舉報(bào)
0/150
提交
取消