我正在尝试创建一个Cocoa Framework,它是一个围绕在Core Foundation中编写的过程框架的面向对象的包装器。程序框架有许多常数,全部定义为extern CFStringRef constantName
。从常量CFStringRef创建常量NSString
如何创建直接映射到过程常量的NSString常量,以便在我的框架中,我可以简单地将NSString常量强制转换为框架内的CFStringRef常量,以便使用框架的开发人员不需要知道投自己。
我试过的每件事情都会导致编译器错误Initializer element is not constant
。这是我想的是使用模式:
Constants.h:
extern NSString * myConstant
Constants.m:
#import "Constants.h"
NSString *myConstant = ConstantFromCFStringRef;
我宣布成功在Constants.m使用NSString *aConstant = @"someStringLiteral"
与NSString的常数值但在这种情况下,我想要获得与我不能忽视的CFStringRef
相同的价值。
这会引发上面描述的错误。 – Randall
如何定义你的'ConstantFromCFStringRef'? – mouviciel
我试过'NSString * myConstant =(NSString *)CFStringRef;'但是会引发上述错误。 我试图使用CFStringGetCStringPtr和CFStringGetCString,但这些也失败了,所以我现在试图写这个以避免必须公开所有常量(以及我必须公开它们的地方,我使用自己的常量和几个私有方法将它们转换为底层框架使用)。 – Randall