What is the UIViewController lifecycle and when is each method called?
Walk through every important UIViewController lifecycle callback, explain its purpose, show the call order with print(#function), and clarify where to put subview setup, constraints, and observation