【发布时间】:2010-09-24 06:27:33
【问题描述】:
据我了解,如果 ClassA 需要包含 ClassB 标头,而 ClassB 需要包含 ClassA 标头以避免任何循环包含,则应该使用前向类声明。我也知道#import 是一个简单的ifndef,因此包含只发生一次。
我的问题是:什么时候使用#import,什么时候使用@class?有时,如果我使用 @class 声明,我会看到常见的编译器警告,如下所示:
warning: receiver 'FooController' is a forward class and corresponding @interface may not exist.
真的很想理解这一点,而不是仅仅删除 @class 前向声明并抛出 #import 以消除编译器给我的警告。
【问题讨论】:
-
前向声明只是告诉编译器,“嘿,我知道我在声明你不认识的东西,但是当我说@MyClass时,我保证我会在实现中#import它"。
标签: objective-c cocoa cocoa-touch