WWDC 2014セッション403 Intermediate Swiftとトランスクリプトで、次のスライドがありました

その場合スピーカーは言った、[unowned self]そこで使わないとメモリリークになる。常に[unowned self]クロージャー内で使用する必要があるという意味ですか?
上スウィフト天気アプリのViewController.swiftのライン64、私は使用しません[unowned self]。しかし、および@IBOutletのようないくつかを使用してUIを更新します。私が定義したはすべてであるため、問題ない可能性があります。しかし、安全のために、常に使用する必要がありますか?self.temperatureself.loadingIndicator@IBOutletweak[unowned self]
class TempNotifier {
var onChange: (Int) -> Void = {_ in }
var currentTemp = 72
init() {
onChange = { [unowned self] temp in
self.currentTemp = temp
}
}
}
onChangeません。[weak self]これはパブリック(内部ではありますが)プロパティなので、クロージャーである必要があります。したがって、別のオブジェクトがクロージャーを取得して保存し、TempNotifierオブジェクトを保持します(無期限にusingオブジェクトは、)への独自の弱い参照を介しonChangeて、TempNotifierがなくなるまで、クロージャを解放しませんでしたTempNotifier。場合var onChange …したprivate var onChange …後、[unowned self]正しいだろう。 私はこれを100%確信しているわけではありません。私が間違っている場合、誰かが私を訂正してください。
[]ですか?Appleのドキュメントに説明がありません。
{}空のクロージャー(クロージャーのインスタンス)がデフォルト(何もしない)で(Int) -> Void、クロージャーの定義です。
