The Objective-C language defers as many decisions as it can from compile time and link time to runtime. Whenever possible, it does things dynamically.
This means that the language requires not just a compiler, but also a runtime system to execute the compiled code.
The runtime system acts
as a kind of operating system for the Objective-C language; it’s what makes the language work.