Avatar
Avatar
tarunon
// ok async { [weak self] in for await notification in NotificationCenter.default... { guard let self = self else { break } self... } } // leak! async { [weak self] in guard let self = self else { return } for await notification in NotificationCenter.default... { self... } } こういうケースは前から結構あったし、async sequenceが出てきた以上無視できないようになったと思う
omochimetaru 8/11/2021 4:02 AM
あーなるほど。 for await イベント通知パターンだと、ループごとに self 取り出さないと、循環参照になるね。 [guard] captureだと固定で先頭で取り出すから駄目なのか。
4:04 AM
どうなんだろうなあ。リークというか、循環してるだけで、切ればいいよね。 画面が表示されてる間は循環してても良くて、 画面が閉じられた時にtaskを一通りcancelして購読解除してやるスタイルなら大丈夫。