2012-03-16 57 views
0

我的类标题找不到在另一个标题“外部”定义的协议。 的结构如下:协议成立ObjC

x1.h具有协议
x2.h进口x1.h
x3.h进口x2.h

的问题是,即x3.h无法找到协议。

我想避免导入x1.h在x3.h减少重复

的错误是“解析问题预计一型”

我有一个运行状态。但是当我将一些#import从x3.m复制到x2.h后,出现了100个错误,包括Unknown Type和Parse Issue。即使在任意类中,例如(y42.m)是错误的。奇怪的是,该类y42.m导入x3.h并不知道x3。

感谢您的阅读!

更多信息:x1.h内容

@protocol aDelegate <NSObject> 

- (void)callback; 

@end 

的x2.h内容

#import "x1.h" 

typedef enum { 
    kOne, 
    kTwo, 
    kThree, 
}States; 

的x3.h内容

#import "x2.h" 

@interface x3 : NSObject <aDelegate> 
{ 
    States anyState; 
} 

@end 

状态未知和aDelegate不明。原因也是未知的。

+0

坦率地说,我不太明白。你说你没有找到协议声明,但是x1。h“有协议”,你相信你可以通过在x2.h中包含x1.h来解决它(你想避免出于很好的理由)。但是,如果该协议在x1.h中,为什么不找到它? – 2012-03-16 16:53:46

+2

也许会提供编译器错误和代码,以便我们可以确切地看到你在做什么。 – nil 2012-03-16 17:04:09

回答

0

我认为,我们需要有关这些错误的详细信息,但我固定一个类似的问题,宣告协议在一个单独的头(只有协议)(x4.h),并在需要的类导入。有了这些信息,唯一的建议。

0

你必须关闭与

@end 

X3宣言和你的枚举被命名为美国,不国家

否则,我没有看到与此代码的任何问题。

0

我也有类似的问题,同样的错误消息。简答:我有一个循环进口。

因此,解决办法是为LuisEspinoza建议。

龙答:有一个导入一大堆通常使用的.h文件.h文件(A.H)。它还定义了一大堆常用的枚举。我需要其中一个引入.h文件(b.h)中的枚举之一。所以,没有想到,我在b.h中导入了“a.h”。 XCode将此报告为“Parse Issue Expected a type”的众多实例。我将这些枚举提取到c.h中,并在a.h和b.h中导入,这就是Luis建议的。

而且学到的教训是,当XCode的报告“解析问题预计一型”,你应该考虑找一个圆形进口。