【发布时间】:2017-05-30 03:34:49
【问题描述】:
let observer = CFRunLoopObserverCreateWithHandler(kCFAllocatorDefault, CFRunLoopActivity.BeforeWaiting.rawValue, false, 0, { (observer, activity) in
self.doSomething()
})
CFRunLoopAddObserver(CFRunLoopGetCurrent(), observer, UITrackingRunLoopMode)
我在 UIViewController 的主运行循环中添加了一个观察者,这意味着 self 是 UIViewController 的一个实例。上面的代码创建了一个保持循环,导致控制器永远不会被释放。
我知道我可以为块声明 [weak self] 或 [unowned self] 来解决问题。我想问一下retian循环到底是什么样的?我只知道该块通过强引用捕获自我。
【问题讨论】:
标签: ios nsrunloop retain-cycle