В моем случае эта ошибка была вызвана циклическими операторами «Импорт» в двух классах: файл заголовка для каждого класса включал заголовок другого класса, в результате чего Неизвестное имя типа «ClassA»;Вы имели в виду «ClassB»? ошибка:
![enter image description here](https://i.stack.imgur.com/aeWLI.png)
Вот как были настроены мои операторы импорта, когда я получил эту ошибку.В ClassA.h
:
Import "ClassB.h"
В ClassB.h
:
Import "ClassA.h"
Чтобы исправить это, я использовал директиву прямого объявления @class
для прямого объявления ClassA в ClassB.h
(это обещает прекомпилятору, что ClassA является допустимым классом и что он будет доступен во время компиляции).Например:
In ClassA.h
:
Import "ClassB.h"
In ClassB.h
:
@class ClassA;
Исправлено Неизвестное имя типа 'ClassA' ошибка, но также введена новая ошибка: ClassB.m
: Тип получателя 'ClassA' для сообщения экземпляра является предварительным объявлением. Например:
![enter image description here](https://i.stack.imgur.com/eQVy9.png)
Чтобы исправить эту новую ошибку, мне пришлось импортировать ClassA.h
вверху файла реализации ClassB (ClassB.m
).Обе ошибки теперь устранены, и я получаю ноль ошибок и предупреждений.
Например, теперь у меня есть:
В ClassA.h
:
Import "ClassB.h"
В ClassB.h
:
@class ClassA;
In ClassB.m
:
Import "ClassA.h"
Оба сообщения об ошибках теперь разрешены.