NSString и CFStringRef являются "мостами с бесплатной связью", а это означает, что вы можете просто установить между ними тип ввода.
Например:
CFStringRef aCFString = (CFStringRef)aNSString;
работает отлично и прозрачно. Точно так же:
NSString *aNSString = (NSString *)aCFString;
Предыдущий синтаксис был для MRC. Если вы используете ARC, новый синтаксис приведен ниже:
NSString *aNSString = (__bridge NSString *)aCFString;
тоже работает. Ключевым моментом, который следует отметить, является то, что CoreFoundation часто возвращает объекты с числом ссылок +1, что означает, что они должны быть освобождены (все функции формата CF [Type] Create делают это).
Приятно то, что в Какао вы можете безопасно использовать autorelease или release для их освобождения.