Да Вы Можете!
я работал над проектом, который сделал это (см. комментарий). К сожалению, никакие примеры кода от того, но гугление показанного они:
, Как можно интегрировать данные из нескольких использований веб-сервисов Excel и VBA
ШАГ ЗА ШАГОМ: Потребление веб-сервисов через VBA (Excel или Word)
Вы уже намекнули на объяснение: цикл #import.
Первое, что я сделаю, это удалим #include
и добавлю следующую строку над определением @protocol
:
@class ServerRequest;
Это прямое объявление класса, которое может помочь разорвать цикл импорта. Прочтите этот вопрос SO для получения более подробной информации. У Apple также есть краткое объяснение в этом руководстве .
По сути, #import
'файл заставляет компилятор перенести весь текст этого файла в рассматриваемый файл, и хотя #import
«умнее», чем #include
, это не означает, что вы защищены от ошибок импорта. Объявление @class
- это способ сообщить компилятору, что класс существует, без импорта заголовка. Это' уместно использовать, когда вам нужно знать только имя класса, но не заботятся о методах, которые он предоставляет. Как правило, вы хотите использовать @class
в файле .h и #import
в файле .m, где вы фактически взаимодействуете с классом.
#import "петли" не проблема. #import аналогичен #include, за исключением того, что он отслеживает файлы и следит за тем, чтобы препроцессор считывал их только в первый раз.
Обычно, когда вы получаете подобную ошибку, это связано с проблемой во включенном файле. Таким образом, ошибка, вероятно, находится в ServerResponseRecord.h, подумал, что она, вероятно, отключена из-за фактического использования объявленного им объекта. Без просмотра полных заголовков невозможно точно сказать, что происходит.