Using the @class directive is more efficient because the compiler doesn’t need to process the entire XYPoint.h file (even though it is quite small); it just needs to know that XYPoint is the name of a class. If you need to reference one of the XYPoint classes methods, the @class directive does not suffice because the compiler would need more information; it would need to know how many arguments the method takes, what their types are, and what the method’s return type is.