Sollen wir in Swift immer das [unbenannte Selbst] innerhalb des Verschlusses benutzen

In der WWDC 2014 session 403 Intermediate Swift und transcriptgab es die folgende Folie

Sollen wir in Swift immer das [unbenannte Selbst] innerhalb des Verschlusses benutzen

Der Sprecher sagte, in diesem Fall, wenn wir nicht verwenden [unowned self] es, es wird ein memory-leak. Bedeutet es, wir sollten immer [unowned self] innen Verschluss?

Auf Zeile 64 der ViewController.swift der Swift-Wetter-appich glaube nicht, verwenden [unowned self]. Aber ich update die Benutzeroberfläche mit einigen @IBOutlets wie self.temperature und self.loadingIndicator. Es kann OK sein, weil alle @IBOutlets I definiert sind weak. Aber zur Sicherheit sollten wir immer [unowned self]?

class TempNotifier {
  var onChange: (Int) -> Void = {_ in }
  var currentTemp = 72
  init() {
    onChange = { [unowned self] temp in
      self.currentTemp = temp
    }
  }
}

InformationsquelleAutor der Frage Jake Lin | 2014-06-20

Schreibe einen Kommentar