Это совсем не глупый вопрос. Он отражает один из более сложных аспектов использования статически типизированного, скомпилированного языка, такого как C (и Objective-C, который является надмножеством C). Для людей, пришедших из динамически типизированных языков (таких как Python, Ruby, PHP и т. Д.), Это может быть слегка неровный переход.
Прежде чем вы сможете использовать тип (в C, Objective-C или C ++), вы должны объявить этот тип. CopyQueue - это тип, поэтому он должен быть объявлен (с использованием @interface CopyQueue : SomeClass {} @end
или неявно объявлен с использованием @class CopyQueue
. В приведенном вами примере программист Какао предположил бы, что CopyQueue.h содержит что-то подобное
@interface CopyQueue : SuperClass { //where SuperClass is the name of the class that CopyQueue inherits from
...
}
...
@end
Если это не так (ваш комментарий к Линдси Фергюсон подсказывает, что это не так), вы должны включить заголовочный файл, который определяет тип класса CopyQueue (как выше), или сообщить компилятору, что CopyQueue является классом (используя @class CopyQueue
).
Объявление @class CopyQueue
- это способ сообщить компилятору, что он может обрабатывать CopyQueue*
как указатель на класс Objective-C (идентификатор типа) и что вы будете заполнять детали (например, переменные экземпляра CopyQueue) и методы) через @interface
позже (например, в отдельном модуле).