2011-06-04 19 views
0

我想写一点的Objective-C(这是新的对我来说,我的背景是多个C++),并希望创建这样一个CFString字符串:在Core Foundation中,是否必须仅使用引用访问对象?

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

CFStringRef是核心基础库,是不是ObjC但平原C.核心基金采用了运行时创建实例,此运行时将调用回调函数初始化结构的内容和管理的情况下,内存的一部分。 这就是为什么没有CFString,因为您不应该在堆栈上创建静态实例,而是调用相应的create函数,然后该函数会向运行时请求一个新的实例,其中已经为您初始化了一切。对于CFStringRef这将是CFStringCreate(),另请参阅:http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFStrings/introCFStrings.html

+0

谢谢你的解释。 – wil 2011-06-04 17:30:15

+0

谢谢你的解释。我也尝试创建一个c风格的结构体并将其实例化为我的objective-c类的方法中的一个对象,并获得了错误消息“存储大小'myObject'未知”。是否因为依赖运行时的必要性?我必须动态分配我的结构以在我的Objective-C类中使用它吗? – wil 2011-06-04 17:37:40

+0

有很多函数可以创建一个CFString; 'CFStringCreate'只是其中之一。 – 2011-06-05 01:26:53

相关问题