嘗試了下Swift3.0中GCD的延時函數與以前的有挺大的不一樣 - swift3.0中有4個延遲函數,以下swift
public func asyncAfter(deadline: DispatchTime, qos: DispatchQoS = default, flags: DispatchWorkItemFlags = default, execute work: @escaping @convention(block) () -> Swift.Void) public func asyncAfter(wallDeadline: DispatchWallTime, qos: DispatchQoS = default, flags: DispatchWorkItemFlags = default, execute work: @escaping @convention(block) () -> Swift.Void) public func asyncAfter(deadline: DispatchTime, execute: DispatchWorkItem) public func asyncAfter(wallDeadline: DispatchWallTime, execute: DispatchWorkItem)
通常開發中,用第三個應該就足夠了,下面看看具體使用api
public func asyncAfter(deadline: DispatchTime, execute: DispatchWorkItem) // 該方法接收一個DispatchTime的參數,點進這個類型的裏面能夠發現實個結構體 public struct DispatchTime : Comparable { public let rawValue: dispatch_time_t public static func now() -> DispatchTime public static let distantFuture: DispatchTime public init(uptimeNanoseconds: UInt64) public var uptimeNanoseconds: UInt64 { get } } // DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2, execute: { self.tableView?.reloadData() if self.refreshControl?.isRefreshing == true { self.refreshControl?.endRefreshing() } }) DispatchTime.now() 獲取當前時間, DispatchTime.now() + 2, 在當前時間的基礎上加2,那就是延時兩秒了