我遇到了追踪保留循环的问题。我认为这与我的事件订阅方式有关。伪代码如下:
override func viewDidLoad() {
func handleEvent() {
self.doSomething()
}
subscribe("eventName", block: handleEvent)
}
deinit {
unsubscribe("eventName")
}
这样做会导致self或我的ViewController出现保留循环吗?如果是的话,我该如何解决?如果我使用闭包,我可以使用[weak self],但由于我传递的是一个函数,是否有任何办法使用类似[weak self]的方式?
subscribe
将传递的闭包用于何种目的,以确定是否存在保留循环。如果它只是调用闭包而不存储它或在另一个闭包中捕获它,然后将其存储(在self
上或者self
具有强引用的某个对象上),那么就没有保留循环。如果确实进行了存储/捕获,那么就存在保留循环。如果您能将代码最简化 [mcve],将会非常有帮助。 - Hamish