2016-03-29 8 views
-1

mit Ich beziehe mich auf ARC in schnellen 2,2 von developer.apple.com (siehe: - link)ARC in Swift 2.2 deinit immer genannt - noch eine Referenz

ich den folgenden Code haben, wird die Denit Methode aufgerufen , aber ich habe immer noch meine Referenz 3 var nicht auf Null gesetzt, kann jemand bitte erklären, warum die Denit aufgerufen wird?

in person.swift Klasse

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

Inside my View Controller

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

    reference1 = Person(name:"John Apple") 

    reference2 = reference1 
    reference3 = reference1 

    reference1 = nil 
    reference2 = nil 

Ausgang: -

John Apple is being initialized 
John Apple is being deinitialized 

Antwort

0

ich ahne, würde das als reference3 eine lokale Variable ist, Im Gegensatz zu einer Instanzvariable wird der Gültigkeitsbereich der Methode nicht mehr angezeigt.

Und BTW der Name dieser Person ist John Appleseed,

+0

Hallo trojanfoe :) nicht John Apple-...... können Sie fügen Sie, was Ihre Version von Code ist, und ich kann den gleichen Betrieb in Xcode testen. – Max

+0

@Max Ich verstehe nicht, was du meinst. Du wolltest wissen, warum das Objekt veröffentlicht wurde; Es gab keinen kaputten Code als solchen. – trojanfoe