Nella sessione 403 Intermediate Swift e trascrizione della WWDC 2014 , c'era la seguente diapositiva

L'oratore ha detto in quel caso, se non usiamo [unowned self]lì, sarà una perdita di memoria. Significa che dovremmo sempre usare la [unowned self]chiusura interna?
Nella riga 64 di ViewController.swift dell'app Swift Weather , non uso [unowned self]. Ma aggiorno l'interfaccia utente usando alcuni @IBOutlets come self.temperaturee self.loadingIndicator. Potrebbe essere OK perché sono tutti @IBOutletdefiniti weak. Ma per sicurezza, dovremmo sempre usare [unowned self]?
class TempNotifier {
var onChange: (Int) -> Void = {_ in }
var currentTemp = 72
init() {
onChange = { [unowned self] temp in
self.currentTemp = temp
}
}
}
onChangedovrebbe essere una [weak self]chiusura, poiché è una proprietà pubblica (internamente, ma comunque), quindi un altro oggetto potrebbe ottenere e archiviare la chiusura, mantenendo l'oggetto TempNotifier intorno (indefinitamente se l'oggetto che utilizza non ha lasciato andare la onChangechiusura fino a quando non vede TempNotifierscomparire, tramite il suo debole riferimento a TempNotifier) . Se var onChange …fosse private var onChange …allora [unowned self]sarebbe corretto. Non ne sono sicuro al 100%; qualcuno mi corregga per favore se sbaglio.
[]? Non riesco a trovare la spiegazione nei documenti di Apple.
{}è la chiusura vuota (l'istanza della chiusura) come impostazione predefinita (non fa nulla), (Int) -> Voidè la definizione di chiusura.
