C et C ++ sont "compilé" les langages de programmation, ce qui signifie que le code source écrit par le programmeur est traduit en langage machine, la création d'un fichier exécutable qui fonctionne sur le système d'exploitation de l'utilisateur. Les langages compilés sont limités dans la façon dont ils travaillent: Beaucoup de décisions concernant l'allocation de mémoire et de la création de l'objet se produisent en temps de compilation, pas pendant les exécute des programmes (runtime). Un programme écrit en Objective C est plus dynamique, capable de recueillir des informations sur lui-même pour prendre des décisions concernant les types de mémoire ou de données, plutôt que d'avoir des décisions avait fait pendant le temps de codage.