3

这段代码给了我错误Cannot find interface declaration for 'OGWView'

typedef SKNode OGWView;

@interface OGWView (Category)
@end

为什么?类别不应该与 typedef 名称一样好用吗?

PS:我知道我可以用#define(或使用原始类名)来解决这个问题,但我真的更想了解为什么不能在 typedef 类上创建类别。

4

2 回答 2

3

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

根据声明的顺序,您会收到不同的警告提示:

typedef NSObject Foo;
@class Foo;

产量:

忽略对象类型的 typedef 名称的前向类“Foo”的重新定义

@class Foo;
typedef NSObject Foo;

产量:

将“Foo”重新定义为不同类型的符号

于 2013-10-25T23:39:08.490 回答
3

替换typedef@compatibility_alias

@compatibility_alias SKNode OGWView;
于 2019-09-23T11:14:48.663 回答