Na sessão 403 da WWDC 2014, Swift intermediário e transcrição , houve o seguinte slide

O orador disse que, nesse caso, se não usarmos [unowned self]lá, será um vazamento de memória. Isso significa que devemos sempre usar o [unowned self]fechamento interno?
Na linha 64 do ViewController.swift do aplicativo Swift Weather , eu não uso [unowned self]. Mas eu atualizo a interface do usuário usando alguns @IBOutlets como self.temperaturee self.loadingIndicator. Pode ser bom, porque todos os que @IBOutleteu defini são weak. Mas por segurança, devemos sempre usar [unowned self]?
class TempNotifier {
var onChange: (Int) -> Void = {_ in }
var currentTemp = 72
init() {
onChange = { [unowned self] temp in
self.currentTemp = temp
}
}
}
onChangedeve ser um [weak self]fechamento, já que é uma propriedade pública (internamente, mas ainda), para que outro objeto possa obter e armazenar o fechamento, mantendo o objeto TempNotifier por perto (indefinidamente se o objeto using não soltou o onChangefechamento até ver o TempNotifierdesaparecimento, através de sua própria referência fraca para o TempNotifier) . Se var onChange …fosse private var onChange …então [unowned self]estaria correto. Não tenho 100% de certeza disso; alguém me corrija por favor se eu estiver errado.
[]? Não consigo encontrar a explicação nos documentos da Apple.
{}é o fechamento vazio (a instância do fechamento) como o padrão (não faz nada), (Int) -> Voidé a definição de fechamento.
