2013-10-24 47 views
3

此代码给我的错误Cannot find interface declaration for 'OGWView'ObjC类: “找不到 'typedefname' 接口声明”

typedef SKNode OGWView; 

@interface OGWView (Category) 
@end 

为什么?这个类别不应该和typedef名字一样工作吗?

PS:我知道我可以用#define(或使用原始类名)修复此问题,但我更感兴趣的是理解为什么无法在typedef类上创建类别。

+0

我不知道答案是什么(我怀疑是编译器根本就不是寻找一个类型存在),但是这似乎是对我不利的一件好事。为什么你会想掩盖你正在延伸的东西? –

+0

因为我想用相同的代码扩展不同但类似的类(取决于当前的构建配置)。我认为它不会工作,因为ObjC运行时在涉及类别时根本不是typedef意识,这意味着typedef不是注册的运行时类,只有原始类是。 – LearnCocos2D

回答

2

我相信这个问题的答案是,你有2种不同的符号。我相信typedef是一个对象,你试图将它用作类符号。

根据声明的顺序上,你得到不同的警告提示之多:

typedef NSObject Foo; 
@class Foo; 

产量:

重新定义一个对象类型的类型名字正向类“富”被忽略

@class Foo; 
typedef NSObject Foo; 

产量:

重新定义的“富”是不同意义的符号