在Core Foundation中,您是否必须仅使用引用来访问对象?

时间:2011-06-04 17:10:07

标签: core-foundation

我正在尝试编写一些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还是Objective-c中的所有结构?

1 个答案:

答案 0 :(得分:1)

CFStringRef是Core Foundation库的一部分,它不是ObjC而是普通的C.Core Foundation使用运行时来创建实例,这个运行时将调用回调来初始化结构内容并管理实例内存。 这就是没有CFString的原因,因为你不应该在堆栈上创建静态实例,而是调用相应的create函数,然后向运行时询问一个已经为你初始化的所有内容的新实例。对于CFStringRef,这将是CFStringCreate(),另请参阅:http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFStrings/introCFStrings.html