【发布时间】:2018-05-29 10:42:34
【问题描述】:
我的视图控制器中有一个强引用模型,它有一个函数listenToQueue,它“监听”我的 Firebase 数据库以进行实时更新。每当发生更新时,它都会将一个对象传回给我的视图控制器,然后它会调用一个函数。这是我的代码:
eventModel.listenToQueue { [weak self] queuer in
self?.queuerDidChange(queuer: queuer)
}
这行得通。然而,最初我的代码是这样的:
eventModel.listenToQueue(updateHandler: queuerDidChange)
这导致了模型和视图控制器之间的保留循环。但是,该代码看起来更干净,所以我想知道是否有办法通过对 self 的弱引用来传递 queuerDidChange 函数?我已经尝试过了,但保留周期仍然存在:
weak var weakSelf = self
eventModel.listenToQueue(updateHandler: weakSelf?.queuerDidChange)
是否有可能做我想做的事,还是我应该坚持我拥有的代码?
【问题讨论】: