据我了解,如果ClassA需要包括ClassB标头,而ClassB需要包括ClassA标头,以避免任何循环包含,则应使用前向类声明。我还了解到an #import很简单,ifndef因此include仅发生一次。 我的询问是:什么时候用一次#import,什么时候用一次@class?有时,如果使用@class声明,则会看到常见的编译器警告,例如: warning: receiver 'FooController' is a forward class and corresponding @interface may not exist. 真的很想了解这一点,而不是仅仅删除@class前向声明并抛出一个#import以使编译器向我发出的警告静音。