Это предварительная декларация.По сути, это говорит компилятору, что существует класс с таким именем.Я использую его в объявлениях интерфейса:
@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
.