Objective C #import цикл

Да Вы Можете!

я работал над проектом, который сделал это (см. комментарий). К сожалению, никакие примеры кода от того, но гугление показанного они:

, Как можно интегрировать данные из нескольких использований веб-сервисов Excel и VBA

ШАГ ЗА ШАГОМ: Потребление веб-сервисов через VBA (Excel или Word)

VBA: Используйте веб-сервисы Мыла

13
задан tba 3 August 2009 в 18:34
поделиться

2 ответа

Вы уже намекнули на объяснение: цикл #import.

Первое, что я сделаю, это удалим #include и добавлю следующую строку над определением @protocol :

@class ServerRequest;

Это прямое объявление класса, которое может помочь разорвать цикл импорта. Прочтите этот вопрос SO для получения более подробной информации. У Apple также есть краткое объяснение в этом руководстве .

По сути, #import 'файл заставляет компилятор перенести весь текст этого файла в рассматриваемый файл, и хотя #import «умнее», чем #include , это не означает, что вы защищены от ошибок импорта. Объявление @class - это способ сообщить компилятору, что класс существует, без импорта заголовка. Это' уместно использовать, когда вам нужно знать только имя класса, но не заботятся о методах, которые он предоставляет. Как правило, вы хотите использовать @class в файле .h и #import в файле .m, где вы фактически взаимодействуете с классом.

26
ответ дан 1 December 2019 в 21:25
поделиться

#import "петли" не проблема. #import аналогичен #include, за исключением того, что он отслеживает файлы и следит за тем, чтобы препроцессор считывал их только в первый раз.

Обычно, когда вы получаете подобную ошибку, это связано с проблемой во включенном файле. Таким образом, ошибка, вероятно, находится в ServerResponseRecord.h, подумал, что она, вероятно, отключена из-за фактического использования объявленного им объекта. Без просмотра полных заголовков невозможно точно сказать, что происходит.

0
ответ дан 1 December 2019 в 21:25
поделиться