2009-08-02 15 views
5

Dado que parece que no encuentro ninguna documentación sobre este tema, ¿es posible crear su propia "clase" de Core Foundation? (clases como las que se pueden usar con CFRetain() y CFRelease) Quiero aprovechar las capacidades polimórficas y la inspección de objetos integradas en Core Foundation sin la sobrecarga de Objective-C o la creación de mi propia jerarquía de objetos.Creación de clases de Core Foundation

Respuesta

4

Sea prevenido: creo que Core Foundation no tiene herencia verdadera sin Objective-C cargada, y con Objective-C cargado obtendrá de todas formas la desaceleración asociada (menor).

Probablemente no haya documentación, pero podría ser posible. Ciertamente no estará limpio. Intente navegar a través del CF-Lite source code (el enlace es para Mac OS X 10.5.7) para tener una idea de la implementación del marco.

Tenga en cuenta que si la sobrecarga de Objective-C que menciona es la sobrecarga de invocación de mensajes, hay muchas maneras de optimizarla (por ejemplo, el método -instanceMethodForSelector:). Es muy probable que dedique más tiempo a intentar entrar en el marco de Core Foundation de lo que está tratando de optimizar el código de Objective-C para ponerlo al día.

+1

Gracias. Miré el paquete CF-lite, y parece que básicamente no es posible hacer tus propios tipos de CF sin usar funciones privadas/no documentadas :( Parece que voy a terminar usando el viejo caché de Obj-C e IMP. –

+0

Si realmente lo necesita, puede escribir envoltorios estáticos estilo C para objetos Objective-C a través del almacenamiento en caché 'IMP' y acceso directo a ivar ... diablos, estoy bastante seguro de que en un entorno que no es GC también puede distribuir su propia asignación . –

0

Técnicamente, no hay clases de Core Foundation. Son tipos opacos.

Cuestiones relacionadas