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