1

Core Foundation で記述された手続き型フレームワークのオブジェクト指向ラッパーである Cocoa フレームワークを作成しようとしています。手続き型フレームワークには、すべて として定義されている多くの定数があります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 を使用して定数値を正常に宣言していますが、この場合、無視できない s とNSString *aConstant = @"someStringLiteral"同じ値が必要です。CFStringRef

4

1 に答える 1

0

やってみました:

NSString * myconstant = (NSString *)constantName;

ここで同じ答えを見つけることができます: CFStringRef を NSString に変換する方法は? そこに:CocoaDev: CFStringRef

実際、Apple はすでにあなたの問題を解決しています。これは、トール フリー ブリッジングと呼ばれます。

于 2009-12-22T11:57:34.913 に答える