如果没有init方法,如何正确地子类化SKNode?

ope*_*rog 2 objective-c ios sprite-kit sknode

SKNode只提供+node方法.

如果你这样做:

+ (instancetype)node {
    CustomNode *body = [CustomNode node]; // infinite loop
}
Run Code Online (Sandbox Code Playgroud)

如果你这样做:

+ (instancetype)node {
    CustomNode *body = [super node]; // instance of SKNode, not CustomNode
}
Run Code Online (Sandbox Code Playgroud)

你如何继承一个只有一个方便构造函数的类,你可以覆盖构造函数?或者最好的做法是创建自己的+customNode方法?

dal*_*ook 7

没有人说你不能[... alloc] init]在SKNode子类上使用.毕竟,SKNode是NSObject的子类.+node只是一种方便的方法.

+ (instancetype)node {
    CustomNode *body = [[self alloc] init];
    return body;
}
Run Code Online (Sandbox Code Playgroud)

这没什么不对.