Создать константу NSString из константы CFStringRef

Я пытаюсь создать Cocoa Framework, который представляет собой объектно-ориентированную оболочку процедурной структуры, написанной в Core Foundation. Процедурная структура имеет ряд констант, которые определены как extern CFStringRef constantName.

Как мне создать константы NSString, которые напрямую сопоставляются с процедурными константами, чтобы в моей среде я мог просто преобразовать константу NSString в константу CFStringRef в пределах структуры, чтобы разработчику, использующему мою структуру, не нужно было знать о приведениях себя.

Все, что я пробовал, приводит к ошибке компилятора Initializer element is not constant. Это шаблон, который я хотел бы использовать:

Константы.ч:

extern NSString * myConstant

Константы.м:

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

Я успешно объявляю постоянные значения с помощью NSString в Constants.m, используя NSString *aConstant = @"someStringLiteral", но в этом случае я хочу иметь то же значение, что и CFStringRef, которое я не могу игнорировать.


person Randall    schedule 22.12.2009    source источник


Ответы (1)


Ты пытался:

NSString * myconstant = (NSString *)constantName;

Вы можете найти тот же ответ здесь: Как преобразовать CFStringRef в NSString? и там: CocoaDev: CFStringRef.

Действительно, Apple уже решила вашу проблему. Это называется бесплатным мостом.

person mouviciel    schedule 22.12.2009
comment
Как определяется ваш ConstantFromCFStringRef? - person mouviciel; 23.12.2009
comment
Я пробовал NSString * myConstant = (NSString *)CFStringRef;, но это выдает указанную выше ошибку. Я пытался использовать CFStringGetCStringPtr и CFStringGetCString, но они также не удались, поэтому сейчас я пытаюсь написать это, чтобы вообще не раскрывать константы (а там, где мне нужно их раскрывать, я использую свои собственные константы и пару частных методов для преобразования их для использования базовой структурой). - person Randall; 26.12.2009