为什么我得到'未知类型名称DetailViewController'错误,只有一些时候我编译?

时间:2014-12-21 17:32:05

标签: ios xcode cocoa-touch uikit

这种情况有时会发生,但并非总是发生:

类的标题

#import "DetailViewController.h"

@interface MasterViewController : UIViewController

@property (nonatomic, weak) DetailViewController *detailViewController;
属性行上的

错误:未知类型名称DetailViewController

然后我在导入后添加此行,错误消失。

@class DetailViewController;

这很烦人,偶尔只会发生一次。我有很多类,没有完美的类行。有些人需要上课。啊,有时它发生在一个工作正常好几天的课堂上,但从某个角度来看,Xcode决定它不再了解这个课程并决定惹恼你。

为什么?

1 个答案:

答案 0 :(得分:2)

您永远不需要同时执行@class并导入头文件,您应该只执行其中一个。 @class告诉编译器该类存在于项目的某个位置。在头文件中,您应该只使用@class来减少循环依赖关系并加快编译速度。然后,一旦您在标题中写了@class,就可以在实现中导入实际的.h文件。

在这种情况下,看起来你确实有一个循环依赖,这是错误的原因。

.h个文件的底线,使用@class中的.m导入完整标题。

注意:如果您继续对X进行子类化,则@class无法正常工作,您必须在.h

中导入完整标题