Он просто сообщает компилятору, что DisclosureButtonController
- это Class
, который определен в другом месте.
Если вы удалите его, вы должны получить ошибку на DisclosureButtonController *childController;
, потому что компилятор не знает, что вы хотите, чтобы он делал в этой строке.
Из Apple Doc Определение класса
Директива @class минимизирует объем кода, видимого компилятором и компоновщиком, и, следовательно, является самым простым способомдать предварительное объявление имени класса.Проще говоря, это позволяет избежать потенциальных проблем, которые могут возникнуть при импорте файлов, импортирующих еще другие файлы.Например, если один класс объявляет статически типизированную переменную экземпляра другого класса, и их два интерфейсных файла импортируют друг друга, ни один класс не может скомпилироваться правильно.
РЕДАКТИРОВАТЬ: я только что увидел, чтоДиректива @class
здесь излишня, потому что вы объявляете этот класс на следующей строке.Возможно был @protocol
, который использовал класс между @class
и @interface
.Но в вашем особом случае вы можете удалить его без проблем.Это избыточно.