На самом деле существует «традиционный способ» (с того времени, когда существовал NSObject), чтобы не использовать литералы NSString, а вместо этого работать с макросом CFSTR следующим образом:
CFStringRef nameWithType2(someEnum type){
CFStringRef string = NULL;
switch (type) {
case type1:
string = CFSTR("type1");
break;
case type2:
string = CFSTR("type2");
break;
case type3:
string = CFSTR("type3");
break;
}
return string;
}
CFSTR(c_string)
- самый короткий метод для создания CFStringRef и намного короче (__bridge CFStringRef)@"NSString"
Также, если кто-то увидит этот код, вы получите более высокий балл за знание CFSTR. Пахнет N00B, чтобы создать литерал NSString, а затем преобразовать его в CFStringRef, И ему нужно добавить теги передачи владения для управления памятью ARC .... вместо создания CFStringRef сразу.