我正在尝试创建一个Cocoa Framework,它是一个面向对象的包装器,围绕在Core Foundation中编写的过程框架。程序框架有许多常量,都被定义为extern CFStringRef constantName
。
我应该如何创建直接映射到过程常量的NSString常量,以便在我的框架中我可以简单地将NSString常量转换为框架内的CFStringRef常量,以便使用我的框架的开发人员不需要知道施展自己。
我尝试的每件事都会导致编译错误Initializer element is not constant
。这是我想要使用的模式:
Constants.h:
extern NSString * myConstant
Constants.m:
#import "Constants.h"
NSString *myConstant = ConstantFromCFStringRef;
我使用NSString *aConstant = @"someStringLiteral"
在Constants.m中使用NSString成功声明了常量值,但在这种情况下,我希望与CFStringRef
具有相同的值,我不能忽略。
答案 0 :(得分:0)
你试过了吗?
NSString * myconstant = (NSString *)constantName;
您可以在此处找到相同的答案:How to convert CFStringRef to NSString?并在那里:CocoaDev: CFStringRef。
苹果确实已经解决了你的问题。这称为Toll Free Bridging。