2009-08-02 6 views
5

Поскольку я не могу найти какую-либо документацию по этому вопросу, можно ли создать свой собственный класс Core Foundation? (классы, как в тех, которые могут использоваться с CFRetain() и CFRelease). Я хочу воспользоваться преимуществами полиморфных возможностей и инспекции объектов, встроенными в Core Foundation без накладных расходов Objective-C или создания собственной иерархии объектов.Создание классов Core Foundation

ответ

4

Будьте предупреждены: я считаю, что Core Foundation не имеет истинного наследования без загрузки Objective-C, и с загрузкой Objective-C вы все равно получите (незначительные) связанные с этим замедления.

Возможно, на нем не будет документации, но это возможно. Это, конечно, не будет чистым. Попробуйте просмотреть через CF-Lite source code (ссылка для Mac OS X 10.5.7), чтобы понять, как реализовать фреймворк.

Обратите внимание, что если накладные расходы на Objective-C вы упоминаете накладные расходы на вызов сообщений, существует множество способов его оптимизации (например, метод -instanceMethodForSelector:). Вы, скорее всего, потратите больше времени, пытаясь проникнуть в рамки Core Foundation, чем пытаетесь оптимизировать код Objective-C, чтобы довести его до скорости.

+1

Спасибо. Я посмотрел на пакет CF-lite, и кажется, что в принципе невозможно создать собственные типы CF, не используя недокументированные/частные функции :( Похоже, я в конечном итоге воспользуюсь хорошим кэшированием Ob'-C и IMP. –

+0

Если вам действительно нужно, вы можете написать статические обертки C-стиля для объектов Objective-C с помощью кэширования IMP и прямого доступа к ivar ... черт возьми, я уверен, что в среде, отличной от GC, вы тоже можете свернуть свое собственное выделение , –

0

Технически, нет классов Core Foundation. Они непрозрачные.

Смежные вопросы