У меня есть определенный домен ошибок, который я хочу опубликовать в протоколе. Домен определяется в файле реализации, как это:Как опубликовать статический void NSString в протоколе?
//in the .m file
static void *MyErrorDomain = (void *)@"MyErrorDomain";
.h файл реализует протокол, и я хотел бы опубликовать MyErrorDomain там. Однако я не могу определить правильную форму. Тот, который дает наименьшее количество ошибок:
// in the protocol
static extern void * TBPluginErrorDomain;
ошибка Xcode является: «Несколько классов хранения в декларации спецификаторов».
Я думал, что статическая конструкция пустот превращает MyErrorDomain в некую функцию, но «статический extern void TBPluginErrorDomain();» только увеличил количество ошибок. Короче говоря, я блуждаю в болоте невежества, и все указания будут очень благодарны.
Не беспокоиться о отсутствии futzing, нет. Я реализовал ваше решение, но, к сожалению, теперь я получаю сообщение об ошибке «Conflicting types for MyErrorDomain». Я прочитал, что указатель (void *) будет автоматически добавлен к правильному типу, так что это довольно озадачивает. –
Ошибка «конфликтующих типов» означает, что в определении или декларации есть что-то лишнее (или что-то не хватает). Скопируйте и вставьте один в строку перед другим, а затем сравните или просто замените тип определения типом объявления (без 'extern'). –
Stare-and-compare? Будет хорошим именем для компании, но слишком большая честность, вероятно, не продается. Во всяком случае, находка по всему проекту показала, что я уже определил MyErrorDomain как NSString const где-то в другом месте. Могу ли я спросить, почему вы изменили void * MyErrorDomain = (void *) @ "MyErrorDomain"; до void * MyErrorDomain = @ "MyErrorDomain"; ? –