Я пытаюсь создать Cocoa Framework, которая представляет собой объектно-ориентированную оболочку вокруг процедурной структуры, написанной в Core Foundation. В процедурной структуре имеется ряд констант, которые определены как extern CFStringRef constantName
.Создать постоянный NSString из константы CFStringRef
Как создать константы NSString, которые непосредственно отображают процедурные константы, так что в моей структуре я могу просто преобразовать константу NSString в константу CFStringRef в рамках такой структуры, что разработчик, использующий мою фреймворк, не должен знать бросает сам.
Все, что я пробовал, приводит к ошибке компилятора Initializer element is not constant
. Это образец, который я хотел бы использовать:
Constants.h:
extern NSString * myConstant
Constants.m:
#import "Constants.h"
NSString *myConstant = ConstantFromCFStringRef;
Я успешно объявляя постоянные значения с NSString в Constants.m используя NSString *aConstant = @"someStringLiteral"
но в этом случае я хочу иметь то же значение, что и CFStringRef
s, которое я не могу игнорировать.
Это вызывает ошибку, описанную выше. – Randall
Как определяется ваш 'ConstantFromCFStringRef'? – mouviciel
Я пробовал 'NSString * myConstant = (NSString *) CFStringRef;' но это выдает указанную выше ошибку. Я попытался использовать CFStringGetCStringPtr и CFStringGetCString, но они также потерпели неудачу, поэтому теперь я пытаюсь написать это, чтобы не открывать константы вообще (и где мне нужно их выставлять, я использую свои собственные константы и пара частных методов для их преобразования в базовую структуру). – Randall