我试图掌握如何识别何时可能有强大的保留周期并需要我使用[weak/unowned self]. 我因不必要的使用[weak/unowned self]而被烧毁,并且在给我机会使用它之前立即释放了自我。
例如,下面是self闭包中引用的异步网络调用。由于网络调用是在没有将调用本身存储到变量中的情况下进行的,这里会发生内存泄漏吗?
NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: url)!) {
(data, response, error) in
self.data = data
)
这是另一个使用 NSNotificationCenter 的示例,稍后可以异步进行调用:
NSNotificationCenter.defaultCenter().addObserverForName(
UIApplicationSignificantTimeChangeNotification, object: nil, queue: nil) {
[unowned self] _ in
self.refresh()
}
我的问题是在什么情况下可能会出现强保留周期?如果我在闭包中进行引用 self 的异步调用或静态调用,这是否使其成为候选对象[weak/unowned self]?感谢您对此有所了解。
