协议成立ObjC
问题描述:
我的类标题找不到在另一个标题“外部”定义的协议。 的结构如下:协议成立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不明。原因也是未知的。
答
我认为,我们需要有关这些错误的详细信息,但我固定一个类似的问题,宣告协议在一个单独的头(只有协议)(x4.h),并在需要的类导入。有了这些信息,唯一的建议。
答
你必须关闭与
@end
X3宣言和你的枚举被命名为美国,不国家。
否则,我没有看到与此代码的任何问题。
答
我也有类似的问题,同样的错误消息。简答:我有一个循环进口。
因此,解决办法是为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的报告“解析问题预计一型”,你应该考虑找一个圆形进口。
坦率地说,我不太明白。你说你没有找到协议声明,但是x1。h“有协议”,你相信你可以通过在x2.h中包含x1.h来解决它(你想避免出于很好的理由)。但是,如果该协议在x1.h中,为什么不找到它? – 2012-03-16 16:53:46
也许会提供编译器错误和代码,以便我们可以确切地看到你在做什么。 – nil 2012-03-16 17:04:09