我正在嘗試創建一個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