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
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.
Tecnicamente, non ci sono classi Core Foundation. Sono tipi opachi.
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. –
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 . –