Для тех из вас, кто интересуется, почему это полезно: форвардные декларации могут использоваться для значительного сокращения ваших зависимостей и значительного сокращения времени сборки, поскольку это позволяет избежать #import заголовков и/или целых фреймворков (которые затем #import другие рамки). Когда форвардные декларации не используются, многие ненужные заголовки видны другим частям вашей программы. Изменение одного заголовка может привести к перекомпиляции многих файлов, а время компиляции и ссылок увеличится. Поскольку типы ObjC всегда рассматриваются как указатели (на нашем уровне абстракции), в большинстве случаев достаточно декларации в начале. Затем вы можете объявить свои ivars в своем @implementation или продолжении класса, а #import может перейти в файл *.m. Другая причина заключается в том, чтобы избежать круговых зависимостей.