2012-06-18 16 views
23

Leggendo del testo, in particolare il documento iOS sui delegati, tutti i metodi del protocollo sono chiamati hook che l'oggetto delegato personalizzato deve implementare. Ma alcuni altri libri, nome questi gancio come callback, qual è la differenza tra loro? Hanno solo un nome diverso ma lo stesso meccanismo? Oltre a Obj-C, alcuni altri linguaggi di programmazione, come C, hanno ottenuto il gancio , stessa situazione con Obj-C?Qual è la differenza tra hook e callback?

risposta

19

La terminologia qui è un po 'sfocata. In generale i due tentano di ottenere risultati simili.

In generale, un callback è una funzione (o delegato) che si registra con l'API per essere chiamato al momento opportuno nel flusso di lavorazione (ad esempio per notificare che il trattamento è in una certa fase)

un gancio tradizionalmente significa qualcosa un po 'più generale che serve allo scopo di modificare le chiamate alla API (ad esempio modificare i parametri passati, monitorare le funzioni chiamate). In questo senso è di solito molto più basso di quello che può essere raggiunto da linguaggi di livello superiore come Java.

Nel contesto IOS, la parola agganciare significa la stessa cosa come callback sopra

8

I due termine sono molto simili e vengono talvolta utilizzati in modo intercambiabile. Un gancio è un'opzione in una libreria dove il codice utente può collegare una funzione per modificare il comportamento della libreria. La funzione di libreria non deve essere eseguita in concomitanza con il codice utente; come in un distruttore.

Un callback è un tipo specifico di hook in cui il codice utente avvia la chiamata alla libreria, in genere una chiamata I/O o GUI, che fornisce il controllo al sottosistema del kernel o della GUI. Il processo di controllo quindi "richiama" il codice utente su un'interrupt o un segnale in modo che il codice utente possa fornire il gestore.

Storicamente, ho visto hook utilizzato per gestori di interrupt e callback utilizzati per gestori di eventi GUI. Vedo anche hook utilizzato quando la routine deve essere collegata staticamente e il callback utilizzato nel codice dinamico.

Problemi correlati