此代码为我提供了错误Cannot find interface declaration for 'OGWView'
:
typedef SKNode OGWView;
@interface OGWView (Category)
@end
为什么呢?该类别不应该与typedef名称一样好用吗?
PS:我知道我可以使用#define(或者使用原始类名)解决这个问题,但我真的更感兴趣的是理解为什么不能在typedef类上创建类别。
答案 0 :(得分:2)
我相信这个问题的答案是你有两种不同的符号。我相信typedef是一个对象,你试图将它用作类符号。
取决于声明的顺序,你会得到不同的警告:
typedef NSObject Foo;
@class Foo;
的产率:
忽略对象类型的typedef名称的前向类'Foo'的重新定义
@class Foo;
typedef NSObject Foo;
的产率:
将'Foo'重新定义为不同类型的符号
答案 1 :(得分:1)
将typedef
替换为@compatibility_alias
@compatibility_alias SKNode OGWView;
我在实验时发现了这个