class ViewController: UIViewController { let processingQueue = DispatchQueue(label: "com.kishikawakatsumi.test") override func viewDidLoad() { super.viewDidLoad() processingLoop { (self) in print(self) } } func processingLoop(_ f: @escaping (ViewController) -> ()) { processingQueue.async { [weak self] in while let strongSelf = self { f(strongSelf) } } } }