Подтвердить что ты не робот

Какова цель рамок CoreFoundation?

Я программировал в Objective-C Cocoa некоторое время, используя NSObjects и т.д. Я вижу, что есть еще одна структура: CoreFoundation. Как я ее просматриваю, это похоже Структура C-Style.

Итак, у меня есть некоторые раритеты, которые я хотел бы уточнить. Я искал googled, но не нашел прямого ответа.

  • Какова цель структуры CoreFoundation?
  • Разве Cocoa Framework не предоставляет все, что уже нужно?
  • Предоставляет ли CoreFoundation Framework какие-либо преимущества, которые не предоставляет CocoaFramework?

Вот некоторые из вопросов, которые у меня есть. Если кто-то может дать ответ или предоставить мне ресурсы, чтобы прочитать об этом, это было бы здорово. Мне интересно, стоит ли больше узнать о структуре.

4b9b3361

Ответ 1

История: Фонд датируется ~ 1993/1994, а API в нем являются частью API OpenStep, опубликованных NeXT.

Какова цель структуры CoreFoundation?

CF был создан во время перехода Mac OS на Mac OS X, чтобы поддержать этот переход. Первоначально это делалось как для скорости, так и для того, чтобы писать чисто программы без Objective-C. Со временем оказалось, что это не проблема, и у CF все больше и больше бит, которые реализованы в Objective-C (посмотрите на двоичный файл CoreFoundation, используя что-то вроде otool).

CFLite - это легкий, портативный, чистый-C (IIRC) вариант.

Разве не поддерживает Cocoa Framework все, что уже нужно?

Более или менее. И, конечно же, для создания графических приложений на iOS или OS X.

Предоставляет ли CoreFoundation Framework какие-либо преимущества, которые CocoaFramework не предоставляет?

Несколько, но обычно с ценой уменьшенной простоты и повышенной хрупкости.

Например, коллекции CF позволяют полностью настроить способ управления памятью и объекты; вы можете предоставить пользовательские маршруты распределения/свободного/хеширования/сравнения. Благодаря этому вы можете "легко" инкапсулировать типы не Objective-C в коллекции CF.

Ответ 2

CoreFoundation - это больше, чем просто альтернатива Foundation для C. В качестве упрощенных терминов Foundation по существу является CoreFoundation, поскольку он построен поверх другого. Многие из классов в Foundation - это просто облегченные обтекатели Objective C вокруг их аналога CoreFoundation, а именно как работает бесплатный мост (например, CFString и NSString).

Для получения дополнительной истории и более технического объяснения см. эту статью.

Если вы действительно хотите прочитать источник CoreFoundation, несколько версий инфраструктуры Apple CFLite доступны для справки здесь.

Ответ 3

Структура Core Foundation обеспечивает те же функции, что и инфраструктура Foundation, но в C вместо Obj-C, поэтому ее можно использовать с C-фреймами.

Если вы посмотрите вокруг, вы увидите, что у Apple есть несколько инфраструктур C, таких как Core Graphics, Core Audio, Address Book и т.д.