Подтвердить что ты не робот

Что делает @class в Objective-C?

Может кто-нибудь объяснить мне, что делает объявление @class в объективном и какие случаи, в которых мы должны использовать это объявление.

4b9b3361

Ответ 1

Своя декларация. По сути, он говорит компилятору, что theres класс этого имени. Я использую его в объявлениях интерфейса:

@class Foo;
@interface Bar : NSObject {
    Foo *someFoo;
}
@end

Конечно, вы можете импортировать заголовок вместо Foo:

#import "Foo.h"
@interface Bar : NSObject {
    Foo *someFoo;
}
@end

Но если someFoo не предоставляется пользователям Bar, они будут импортировать дополнительный файл заголовка, который им не нужен. При объявлении @class пользователи Bar не видят дополнительного импорта, потому что Foo.h будет импортирован в файл реализации Bar.

Ответ 2

он называется объявлением вперед.

вы используете эту директиву, чтобы сообщить компилятору, что существует класс objc с указанным именем. ваши другие параметры включают в себя интерфейс или использование идентификатора для переменных или типов.

это полезно для минимизации зависимостей. я использую их, когда могу, чтобы минимизировать зависимости и значительно сократить время сборки.

это то же самое, что и в c и С++:

struct mon_struct;
namespace MON { class mon_class; }

Ответ 3

надеюсь, что это поможет немного больше

В ответе уже сказано почти все, я хотел бы добавить что-то на нем.

@class Foo является прямым объявлением класса Foo. Это похоже на компилятор, класс foo существует. Не беспокойтесь об этом прямо сейчас.

Примечание. - Объявление класса становится очень важным, когда оба класса нуждаются друг в друге. если мы будем делать обычный оператор #import, тогда у нас будет бесконечный цикл импорта, а компиляторы не любят бесконечные циклы. Поэтому мы используем @class Classname.

Ответ 4

@class используется для создания прямого объявления любого класса. Если вы создаете какой-либо класс, реализация которого неизвестна вам, вы можете сделать это, используя директиву @class.

Вы можете реализовать этот класс, когда реализация известна вам.