As per Apple documentation :
@class allows you to declare that a symbol is an Objective-c class
name without the need to #import the header file that defines the
class.
You would use this where you only need the class name defined for the
purposes of declaring a pointer to the class or a method parameter of
the class, and you do not need to access any methods, fields, or
properties in the class.
It saves a minuscule amount of compile time vs the #import, and it
sometimes helps avoid messy include circularity issues.
Great answer from here
for example when you creat a protocol:
@class yourCustomView;
@protocol yourCustomViewDelegate <NSObject>
@required
- (void) somethingDidInView:(UIView*)view;
@end
@interface yourCustomView : FIView