Dans la session 403 de la WWDC 2014 Intermediate Swift et transcription , il y avait la diapositive suivante

L'orateur a dit que dans ce cas, si nous ne l'utilisons pas [unowned self], ce sera une fuite de mémoire. Cela signifie-t-il que nous devrions toujours utiliser la [unowned self]fermeture intérieure?
Sur la ligne 64 de ViewController.swift de l'application Swift Weather , je n'utilise pas [unowned self]. Mais je mets à jour l'interface utilisateur en utilisant certains @IBOutlets comme self.temperatureet self.loadingIndicator. Cela peut être OK car tous les @IBOutlets que j'ai définis le sont weak. Mais pour la sécurité, devrions-nous toujours utiliser [unowned self]?
class TempNotifier {
var onChange: (Int) -> Void = {_ in }
var currentTemp = 72
init() {
onChange = { [unowned self] temp in
self.currentTemp = temp
}
}
}
onChangedevrait être une [weak self]fermeture, car c'est une propriété publique (en interne, mais quand même), donc un autre objet pourrait obtenir et stocker la fermeture, en gardant l'objet TempNotifier autour (indéfiniment si l'objet utilisateur n'a pas lâché la onChangefermeture jusqu'à ce qu'il voit le TempNotifierdisparu, via sa propre référence faible à la TempNotifier) . Si var onChange …c'était le cas , private var onChange …ce [unowned self]serait correct. Je n'en suis cependant pas sûr à 100%; quelqu'un me corrige s'il vous plaît si je me trompe.
[]? Je ne trouve pas l'explication dans les documents Apple.
{}est la fermeture vide (l'instance de la fermeture) par défaut (ne fait rien), (Int) -> Voidest la définition de la fermeture.
