2009-08-02 8 views
5

Puisqu'il me semble que je n'ai trouvé aucune documentation à ce sujet, est-il possible de créer votre propre «classe» de base de base? (classes comme dans celles qui peuvent être utilisées avec CFRetain() et CFRelease) Je veux profiter des capacités polymorphes et de l'inspection des objets intégrées dans Core Foundation sans la surcharge d'Objective-C ou créer ma propre hiérarchie d'objets.Création de classes de base de base

Répondre

4

Soyez averti: Je crois que Core Foundation n'a pas de vrai héritage sans Objective-C chargé, et avec Objective-C chargé vous obtiendrez les ralentissements associés (mineurs) de toute façon.

Il n'y aura probablement aucune documentation à ce sujet, mais cela pourrait être possible. Ce ne sera certainement pas propre. Essayez de parcourir le CF-Lite source code (le lien est pour Mac OS X 10.5.7) pour avoir une idée de l'implémentation du framework. Notez que si la surcharge d'Objective-C dont vous parlez est la surcharge de l'appel de message, il existe de nombreuses façons de l'optimiser (par exemple, la méthode -instanceMethodForSelector:). Il est fort probable que vous passiez plus de temps à essayer de vous frayer un chemin dans le framework Core Foundation que d'essayer d'optimiser le code Objective-C pour le mettre à jour.

+1

Merci. J'ai regardé le paquet CF-lite, et il semble qu'il n'est fondamentalement pas possible de créer vos propres types de CF sans utiliser de fonctions non documentées/privées :( On dirait que je finirai par utiliser la bonne mémoire cache Obj-C et IMP. –

+0

Si vous en avez vraiment besoin, vous pouvez écrire des wrappers statiques de style C pour les objets Objective-C via la mise en cache 'IMP' et l'accès direct ivar ... Je suis sûr que dans un environnement non-GC vous pouvez aussi lancer votre propre allocation . –

0

Techniquement, il n'y a pas de classes de base de base. Ce sont des types opaques.

Questions connexes