2009-08-02 8 views
5

Poiché non riesco a trovare alcuna documentazione su questo argomento, è possibile creare la propria "classe" Core Foundation? (classi come in quelle che possono essere utilizzate con CFRetain() e CFRelease) Voglio sfruttare le capacità polimorfiche e l'ispezione dell'oggetto incorporate in Core Foundation senza il sovraccarico di Objective-C o la creazione della mia gerarchia di oggetti.Creazione di classi Core Foundation

risposta

4

Essere avvisati: Credo che Core Foundation non abbia vera eredità senza Objective-C caricato, e con Objective-C caricato si otterranno comunque i rallentamenti associati (minori).

Probabilmente non ci sarà alcuna documentazione su di esso, ma potrebbe essere possibile. Di certo non sarà pulito. Prova a sfogliare lo CF-Lite source code (il link è per Mac OS X 10.5.7) per avere un'idea dell'implementazione del framework.

Si noti che se il sovraccarico di Objective-C è il sovraccarico dell'invocazione del messaggio, esistono molti modi per ottimizzarlo (ad esempio, il metodo -instanceMethodForSelector:). È molto probabile che passi più tempo a cercare di introdurti nel framework della Core Foundation piuttosto che provare a ottimizzare il codice Objective-C per renderlo operativo.

+1

Grazie. Ho esaminato il pacchetto CF-lite e sembra che in pratica non sia possibile creare i propri tipi di CF senza utilizzare funzioni private/non documentate :( Sembra che finirò per usare il buon vecchio caching Obj-C e IMP. –

+0

Se proprio ne hai bisogno, puoi scrivere wrapper statici in stile C per oggetti Objective-C tramite il caching 'IMP' e l'accesso diretto di ivar ... diamine, sono abbastanza sicuro che in un ambiente non GC puoi anche eseguire il rollout della tua allocazione . –

0

Tecnicamente, non ci sono classi Core Foundation. Sono tipi opachi.

Problemi correlati