seniorObjective-C
Walk through what happens from tapping an app icon to its first frame rendered
Updated May 17, 2026
Short answer
SpringBoard launches process → dyld loads Mach-O → runtime init → main → UIKit setup → first CoreAnimation commit → GPU renders frame.
Deep explanation
SpringBoard (UI system process) receives tap event, calls launch services. kernel spawns process via exec. dyld loads Mach-O binary, performs rebasing + symbol binding using shared cache. objc runtime initializes classes + categories. UIApplicationMain starts run loop. UIKit builds view hierarchy. Core Animation commits first transaction. Render Server converts layer tree into GPU commands. Metal renders frame at next vsync.
Real-world example
Slow launch caused by heavy +load methods or static initializers.
Common mistakes
- Thinking UI appears before dyld finishes.
Follow-up questions
- What is the biggest launch bottleneck?
- Where can optimization happen?