1

我正在尝试创建一个 Cocoa 框架,它是一个面向对象的包装器,围绕着用 Core Foundation 编写的程序框架。程序框架有许多常量,它们都被定义为extern CFStringRef constantName.

我应该如何创建直接映射到过程常量的 NSString 常量,以便在我的框架中我可以简单地将 NSString 常量转换为框架内的 CFStringRef 常量,这样使用我的框架的开发人员就不需要知道自己的转换。

我尝试过的每一件事都会导致编译器错误Initializer element is not constant。这是我想使用的模式:

常量.h:

extern NSString * myConstant

常数.m:

#import "Constants.h"
NSString *myConstant = ConstantFromCFStringRef;

我在 Constants.m 中使用 NSString 成功地声明了常量值,但在这种情况下,我希望具有与我不能忽略NSString *aConstant = @"someStringLiteral"的 s 相同的值。CFStringRef

4

1 回答 1

0

你有没有尝试过:

NSString * myconstant = (NSString *)constantName;

您可以在这里找到相同的答案:如何将 CFStringRef 转换为 NSString?还有:CocoaDev: CFStringRef

事实上,Apple 已经解决了你的问题。这称为免费桥接

于 2009-12-22T11:57:34.913 回答