В Core Foundation нужно ли обращаться к объектам только по ссылкам? - PullRequest
0 голосов
/ 04 июня 2011

Я пытаюсь написать немного об Objective-C (что для меня ново, мой опыт - больше C ++), и я хотел создать CFString следующим образом:

CFString myString;

Когда я пытаюсьпостроить мой проект следующая ошибка:

"'CFString' undeclared" (first use in this function)

мешает строить.Я думал, что просто забыл включить соответствующий заголовок, но я не могу найти, какой включить.Когда я смотрю в некоторый пример кода, я никогда не вижу «CFString», а скорее объекты «CFStringRef», определенные как

A reference to a CFString object.
typedef const struct __CFString *CFStringRef;

. Я начал подозревать, что в CFString нет такой вещи, к которой я мог бы обратитьсякод, но я чувствую, что я где-то не так.Я?Разве невозможно создать CFStrings?Это специфично для CFString или для всех структур в target-c?

1 Ответ

1 голос
/ 04 июня 2011

CFStringRef является частью библиотеки Core Foundation, которая не является ObjC, а представляет собой простой C. Core Foundation использует среду выполнения для создания экземпляров; эта среда выполнения вызывает обратные вызовы для инициализации содержимого структур и управляет памятью экземпляров. Вот почему нет CFString, потому что вы не должны создавать статические экземпляры в стеке, а вместо этого вызывать соответствующую функцию create, которая затем запросит у среды выполнения новый экземпляр со всем, что уже инициализировано для вас. Для CFStringRef это будет CFStringCreate(), см. Также: http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFStrings/introCFStrings.html

...