swift 为什么这不会泄漏内存?RxFeedback

uinbv5nw  于 2022-11-28  发布在  Swift
关注(0)|答案(1)|浏览(111)

第一个
我试图理解为什么RxFeedback中的react方法在这个例子中没有产生内存泄漏。它的参数之一是效果闭包,这是一个@转义闭包,我不是在削弱它,而是在它里面强烈地捕获self来调用用例。我假设它与RxFeedback无关,而是我对ARC和内存管理的了解。
为了测试ViewController的取消分配,我只是从NavigationController中弹出它。
我希望你能详细解释为什么这段代码没有创建一个保留周期。提前感谢!

wi3ka0sx

wi3ka0sx1#

没有保留循环。但是,您的视图控制器保存了对视图模型的几个引用(直接和间接)。
比如说,你的视图控制器有一个viewModel属性,它还保存了一个disposeBag,它保存了一个disposable,它保存了一个Observable,它保存了视图模型中的闭包,它保存了视图模型.
只有当一次性用品也被同一个被捕获的对象保留时,对自身的强捕获才是一个问题。在这种情况下,视图模型是“自身”,但视图控制器是保留一次性用品的控制器(通过其一次性用品袋)。

相关问题