我正在尝试创建一个Cocoa框架,它是一个用Core Foundation编写的过程框架的面向对象的包装器。该过程框架有许多常量,这些常量都定义为extern CFStringRef constantName。
我应该如何创建直接映射到过程常量的NSString常量,以便在我的框架中,我可以简单地将NSString常量转换为框架内的CFStringRef常量,以便使用我的框架的开发人员不需要知道自己的强制转换。
我尝试过的每一件事都会导致编译器错误Initializer element is not constant。这是我想要使用的模式:
Constants.h:
extern NSString * myConstantConstants.m:
#import "Constants.h"
NSString *myConstant = ConstantFromCFStringRef;我使用NSString *aConstant = @"someStringLiteral"在Constants.m中使用NSString成功地声明了常量值,但在本例中,我希望与CFStringRefs具有相同的值,这是我不能忽略的。
发布于 2009-12-22 19:57:35
您是否尝试过:
NSString * myconstant = (NSString *)constantName;你可以在这里找到相同的答案:How to convert CFStringRef to NSString?和那里:CocoaDev: CFStringRef。
事实上,苹果已经解决了你的问题。这称为Toll Free Bridging。
https://stackoverflow.com/questions/1945924
复制相似问题