【发布时间】:2015-05-18 19:23:18
【问题描述】:
我有这段代码,它会在延迟后运行一段代码。
public func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
}
问题是使用延迟功能的视图控制器即使在关闭后仍然存在。删除代码后,它就变成了 nil。
我需要知道如何拥有一个像这样的延迟函数,但它不会持久化调用它的对象,而是不会调用块,以防它不再存在。
这是在 Swift 中,但完全感谢 Objective-C 中的回复。
【问题讨论】:
-
向我们展示您的
closure的代码。通常,您必须使用weak引用来解决保留周期问题。
标签: ios objective-c swift memory dispatch