Aquesta secció explica com treball la definció estàtica i discuteix algunes altres característiques de l'Objective-C, incloent-hi formes per vèncer temporalment el seu dinamisme inherent.
Els objectes d'Objective-C són entitats dinàmiques. Com moltes desicions sobre ells són desplaçats de la compilació a l'execució:
id no que no sabem quina és la classe de l'objecte. La classe exacte d'una variable id (i per tant els seus mètodes particulars i la estructura de dades) no es determinen fins que el programa s'executa.
Aquestes característiques donen als programes orientats a objectes una gran quantitat de potència i flexibilitat, però hi ha un preu a pagar. Els missatges són quelcom més lents que les crides a funcions, per exemple, (encara que no més lent esperat per la eficiència del sistema d'execució) i el compilador no pot comprovar els tipus exactes (classes) de les variables id.
Per permetre una millor la comprobació de tipus a l'hora de compilar, i fer el codi més auto-documentat, l'Objective-C permet els objectes per estar definits estàticament amb un nom de classe més enlla que la definició general d'id. Això també permet eliminar algunes de les seves característiques orientades a objectes de manera que desplacin les operacions de l'execució cap a la compilació.