Attualmente sto seguendo lo Apple Documentation. Ecco la mia domanda:ARC (conteggio di riferimento automatico) nell'azione
class Person {
let name: String
init(name: String) {
self.name = name
println("\(name) is being initialized")
}
deinit {
println("\(name) is being deinitialized")
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var reference1: Person?
var reference2: Person?
var reference3: Person?
reference1 = Person(name: "John Appleseed")
// prints "John Appleseed is being initialized
reference2 = reference1
reference3 = reference1
reference1 = nil
reference2 = nil
}
}
Dopo reference1
uguale nil
, ARC rilascia l'istanza e stampe "John Appleseed is being deinitialized"
non dovrebbe essere rilascia dopo reference3 = nil
?
@JakubVano per avere maggiori informazioni sto facendo funzionare questo codice in viewDidLoad metodo(). Comunque reference3 non è nil, il compilatore rilascia l'istanza anche se esiste il riferimento Strong. – ridvankucuk
Questo screenshot ha aggiunto clutter, non chiarezza. – nhgrif
Come si determina il * momento * esatto in cui si verifica il 'deinit'? Mi aspetterei che venga chiamato non appena il metodo ritorna (e sicuramente non un momento dopo). Potrebbe essere chiamato in precedenza a causa di un qualche tipo di ottimizzazione, ma sicuramente non andrà in giro dopo il ritorno del metodo. – nhgrif