私は、メモリ管理の点でSwiftのブロックに関数を割り当てるとき(すなわち、保持サイクルを避けたいと思っている)、それが何を意味するのか疑問に思っています。Swiftのブロックに関数を割り当てるときのセマンティクスをキャプチャしますか?
class Button {
var wasTapped:() -> Void
}
となるように、私はビューコントローラでそれを使用します:
class ViewController {
let button: Button
func setUpButtonHandler() {
button.wasTapped = ...
}
func buttonWasTapped() {
// do something
}
}
私の質問はbutton.wasTapped = ...
の割り当てについてですたとえば、私は次のように定義されたボタンを持つ
を言います。
もちろん、私はそうのようにそれを設定した場合:
button.wasTapped = { self.buttonWasTapped() }
は私がちょうど保持サイクルを作成:のViewController - >ボタン - >のViewController。
しかし、スウィフトは、私が代わりにこれを行うことができます:
button.wasTapped = buttonWasTapped
はこれを行うには、それは安全ですか? (つまり、これにより保持サイクルが防止されますか?)
便利な投稿:+1 –