О, один из них. Я ненавижу это.
Скорее всего, это из-за того, что протоколы не объявлены (или написаны с ошибками). Или это потому, что в заголовке есть синтаксическая ошибка, из-за которой компилятору не удается закрыть выражение или область видимости. Или это может быть синтаксическая ошибка рядом с тем местом, где файл заголовка был импортирован в файл .m.
В любом случае боль в заднице. Однако вы можете взять командную строку компилятора и вставить в нее -E; это заставит компилятор все предварительно скомпилировать и выгрузить именно то, что он собирался скомпилировать в то, что должно быть .o (вы также можете изменить это имя). Затем, если вы посмотрите, где находится приведенная выше строка кода, строка, вызывающая ошибку, должна быть рядом, даже если из другого заголовка