Вы используете его в .h, чтобы сообщить о пользовательском классе, не включая .h для пользовательского класса.
Пример: два пользовательских класса: Car и Wheel
Car.h
----------------
@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end
Car.h не знает о классе 'Wheel', поэтому выдает ошибку, поэтому вы можете импортировать Wheel.h следующим образом:
Car.h
----------------
#import "Wheel.h"
@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end
НО вам также не нужно это делать.Car.h не нужно ничего знать о классе Wheel, просто нужно знать, что он существует.Итак, вы используете @class, чтобы просто сказать: «Эй, этот класс существует. Поверьте мне на слово».
Car.h
----------------
@class Wheel;
@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end
Затем внутри Car.m, когда вам действительно нужно знать окласс Wheel (свойства, методы и т. д.), в который вы должны импортировать Wheel.h.