考虑以下代码:无法识别的选择器发送到实例错误?
SCNNode *someNode = [[SCNNode alloc] init];
Piece *piece = (Piece *)someNode;
[piece pick];
如果片的子类SCNNode和含有一种称为选秀权。 Xcode返回此错误:
[SCNNode pick]: unrecognized selector sent to instance
有人可以告诉我的代码有什么问题吗?
编辑:
我想这一点。同样的问题。
- (id)initPieceWithNode:(SCNNode *)node {
if (self = [super init]) {
self = (Piece *)[node copy];
}
return self;
}
'someNode'不是'Piece'对象,它是'SCNNode'对象。你不能简单地将一个基类实例转换成一个子类实例,并期望它能够工作。 – rmaddy
@rmaddy,但其返回的'pick'不是'SCNNode'的方法,而OP已经在'SCNNode'中定义了它。 –
@BurhanuddinSunelwala不,'pick'是'Piece',而不是'SCNNode'的方法。 – rmaddy