DevPrep

All topics › What does it print? Interview puzzles

asyncAfter with self in a ViewController: when is the screen freed?

Middle PRO

Task

The user opens the screen and closes it after 3 seconds. Is "text" printed? When does deinit run?

final class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
            self.log("text")
        }
    }

    private func log(_ message: String) { print(message) }

    deinit { print("deinit") }
}

The rest of this answer, with code and interview follow-ups, is in the DevPrep app.

Read the full answer in DevPrep

Practice this before your interview

DevPrep turns these answers into one-minute challenges: what does this code print, find the bug, mock interviews. One challenge a day.

Get DevPrep on the App Store