Это не то, для чего @class
.
Вы используете @class
в заголовочном файле для другого класса , чтобы сообщить компилятору о том, что класс, который вы объявляете, существует. Без этого компилятор не знал бы, что это имя класса, и когда вы объявляете переменную как содержащую указатель на экземпляр этого класса, компилятор думает, что вы просто составляете слова. Использование @class
называется объявлением класса вперед.
У вас другая ситуация. Вы находитесь в файле реализации для этого класса .
Теперь вам нужен компилятор - @interface
класса. Предупреждение говорит вам, что компилятору нужен @interface
, но вы его не дали (поэтому, насколько он знает, @interface
«может не существовать»).
Обычно вы бы написали @interface
в заголовочном файле; как теперь получить его в файле реализации?
Вот тут и вступает препроцессор со своей директивой #import
. В верхней части файла реализации (ClusteringController.m) импортируйте файл заголовка:
#import "ClusteringController.h"
Препроцессор заменит это содержимым этого файла, а затем передаст предварительно обработанный код компилятору, который увидит @interface
там.