我的类标题找不到在“外部”定义的另一个标头中声明的协议。 结构如下:
x1.h有协议
x2.h导入x1.h
x3.h导入x2.h
问题是,x3.h无法找到协议。
我想避免在x3.h中导入x1.h以减少重复
错误是“Parse Issue Expected a type”
我有一个跑步状态。但是在我将一些#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
状态未知,且未知门槛不明。原因也不得而知。
答案 0 :(得分:0)
我认为我们需要更多关于错误的信息,但我修复了一个类似的问题,在一个单独的标题(只有协议)(x4.h)中声明协议,并将其导入所需的类中。有了这些信息,这是唯一的建议。
答案 1 :(得分:0)
您必须使用
关闭x3声明@end
您的枚举名称为状态,而非状态。
否则我认为此代码没有任何问题。
答案 2 :(得分:0)
我遇到了类似的问题,但错误信息相同。简短的回答:我有一个循环导入。
所以解决方案就像LuisEspinoza所说的那样。
答案很长:有一个.h文件(a.h)可以导入一大堆常用的.h文件。它还定义了一大堆常用的枚举。我在其中一个导入的.h文件(b.h)中需要其中一个枚举。所以,不假思索地,我在b.h中导入了“a.h”。 XCode将此报告为“Parse Issue Expected a type”的众多实例。我将枚举提取到c.h并在a.h和b.h中导入,这是Luis建议的。
所吸取的教训是,当XCode报告“Parse Issue Expected a type”时,您应该考虑寻找循环导入。