创建不可变的CFArray对象 – Apple示例不起作用
为了测试,我复制了以下示例代码[ https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFCollections/Articles/creating.html]并编译它:
#import CFStringRef strs[3]; CFArrayRef anArray; strs[0] = CFSTR("String One"); strs[1] = CFSTR("String Two"); strs[2] = CFSTR("String Three"); anArray = CFArrayCreate(NULL, (void *)strs, 3, &kCFTypeArrayCallBacks);
现在我得到以下错误:“没有匹配函数来调用CFArrayCreate”
为什么它不可编译以及如何实现它是可编译的?
CFArrayCreate()
的第二个参数的类型是const void **
。 因此,将呼叫更改为:
anArray = CFArrayCreate(NULL, (const void **)strs, 3, &kCFTypeArrayCallBacks);
这实际上只是C ++中的一个问题,因为它对于转换为void*
要严格得多。 在C中, void*
可以自由地转换为其他指针类型。