Вы импортируете только те вещи, которые вам нужны, и @class делает что-то похожее на #import - он сообщает компилятору, что тип существует. Так зачем вам сообщать делегату приложения о классе, который он никогда не увидит?
Разница:
@class
только скажет, что класс существует, ничего более.
#import
сообщает коду, какие сообщения принимает класс или что-либо еще, что объявляет заголовочный файл. Таким образом, вы используете его, когда код должен фактически отправлять сообщения объекту.
Вот почему очень общий шаблон - использовать @class в заголовке и #import в файле реализации. Иногда вам нужно импортировать в заголовок, опять же, если вам нужно знать что-то большее, чем «этот класс существует».