Нужно ли мне объявление @class в файле AppDelegate.h для каждого контроллера представления в моем проекте? - PullRequest
1 голос
/ 13 февраля 2010

Пожалуйста, объясните ваши ответы, так как мне уже не нужно это делать.

Спасибо

Ответы [ 3 ]

3 голосов
/ 13 февраля 2010

@ class аналогичен объявлению пересылки классов в C ++.

Вы можете просто #import заголовочного файла каждого контроллера представления, но иногда лучше сделать предварительные объявления (@class) в файле .h и только #import в файле .m вашего AppDelegate.

2 голосов
/ 13 февраля 2010

Вы импортируете только те вещи, которые вам нужны, и @class делает что-то похожее на #import - он сообщает компилятору, что тип существует. Так зачем вам сообщать делегату приложения о классе, который он никогда не увидит?

Разница:

@class только скажет, что класс существует, ничего более.

#import сообщает коду, какие сообщения принимает класс или что-либо еще, что объявляет заголовочный файл. Таким образом, вы используете его, когда код должен фактически отправлять сообщения объекту.

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

0 голосов
/ 13 февраля 2010

Краткий ответ: Нет. Смотрите этот вопрос: @ class vs. # import

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...