Meccanismo di invio messaggi Objective C

Non vedo l’ora di giocare con Objective C (scrivere app per iPhone giocattolo) e sono curioso del meccanismo sottostante utilizzato per inviare messaggi. Ho una buona comprensione di come le funzioni virtuali in C ++ siano generalmente implementate e quali siano i costi relativi a una chiamata di metodo statica o non virtuale, ma non ho alcun background con Obj-C per sapere come vengono inviati i messaggi. Navigando in giro ho trovato questo benchmark allentato e si menziona che i messaggi nella cache IMP sono più veloci delle chiamate alle funzioni virtuali, che sono a loro volta più veloci di un normale invio di messaggi.

Non sto cercando di ottimizzare nulla, ma solo una comprensione più profonda di come vengono spediti esattamente i messaggi.

  • Come vengono inviati i messaggi Obj-C?
  • In che modo i puntatori del metodo di istanza vengono memorizzati nella cache e puoi (in generale) dire leggendo il codice se un messaggio verrà memorizzato nella cache?
  • I metodi di class sono essenzialmente gli stessi di una funzione C (o un metodo di class statico in C ++) o c’è qualcosa di più per loro?

So che alcune di queste domande potrebbero essere “dipendenti dall’implementazione”, ma c’è solo un’implementazione che conta davvero.