根据我的理解,如果ClassA需要包含ClassB头,则应该使用前向声明,而ClassB需要包含ClassA头以避免任何循环包含.我也明白a #import是一个简单的,ifndef所以包含只发生一次.
我的询问是这样的:什么时候使用#import,什么时候使用@class?有时如果我使用@class声明,我会看到一个常见的编译器警告,如下所示:
warning: receiver 'FooController' is a forward class and corresponding @interface may not exist.
真的很想理解这一点,而不是仅仅删除@class前向声明并抛出一个#import静音编译器给我的警告.
我不知道Objective-C风格.
我有FooClass.[hm]依赖于BarClass.[hm]的实现(虽然不是它的接口).我可以#import "BarClass.h"直接在FooClass.m中,也可以通过FooClass.h间接访问.我想知道这个的共同选择.