2016-03-29 15 views
-1

sahipARC Swift 2,2 deinit denilen alma - Hala (bkz: - <a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html" rel="nofollow">link</a>) developer.apple.com ivedi 2.2 ARC bahsediyorum bir referans

aşağıda kod var, Denit yöntemi denir ama yine de referansım var 3 var nil olarak ayarlanmadı, lütfen herkes denitin neden çağrıldığını açıklayabilir mi? Benim View Controller İçerisinde person.swift sınıfında

class Person { 
    let name: String 
    init(name: String) { 
     self.name = name 
     print("\(name) is being initialized") 
    } 
    deinit { 
     print("\(name) is being deinitialized") 
    } 
} 

var reference1 : Person? 
    var reference2 : Person? 
    var reference3 : Person? 

    reference1 = Person(name:"John Apple") 

    reference2 = reference1 
    reference3 = reference1 

    reference1 = nil 
    reference2 = nil 

çıkışı: - Ben reference3 gibi bir yerel değişken olduğu bir tahminde ediyorum

John Apple is being initialized 
John Apple is being deinitialized 

cevap

0

, Bir örnek değişkeninin aksine, yöntem döndüğünde kapsam dışı olur.

Ve

BTW Kişilerin ad kod sizin sürümüdür ve ben xcode aynı çalışan test edebilirsiniz? Yapıştırabilirsiniz John Appleseed değil John Apple'ın :)

+0

Merhaba trojanfoe ...... olduğunu. – Max

+0

@Max Ne demek istediğini anlamıyorum. Nesnenin neden serbest bırakıldığını bilmek istediniz; böyle bir kırık kod yoktu. – trojanfoe