Inici de sessió d'usuari


Permetent Característiques Estàtiques


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ó:

  • La memòria dels objectes és assignada dinàmicament en temps d'execució pels mètodes de la classe que creen noves instàncies.
  • Els objectes són definits dinàmicament. En el codi font (en temps de compilació), qualsevol punter d'objecte pot ser de tipus 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.
  • Els missatges i mètodes estan enllaçats dinàmicament, tal com es descriuen sota "Com Treballa la Missatgeria". Un procediment d'execució equival al selector de mètode en el missatge a una implementació de mètode que "pertany a" el receptor.

 

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ó.

En aquesta secció: