[super init]
我试图了解使用vs初始化子类有什么区别[SuperClassType classMethod]
。以下是代码示例:
-(instancetype)initWithAPPImageName:(NSString *)appImageName {
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"character"];
self = (AppNode *)[super initWithTexture:[atlas textureNamed: appImageName]];
if(self)
{
self.name = @"appNode";
if([self isKindOfClass:[AppNode class]])
{
self.position = [self GetPosition];
}
}
return self;
}
在这里它按预期工作。self
是一种AppNode
,但在下面,SKSpriteNode
即使强制转换,它也总是返回。有什么不同吗?
-(instancetype)initWithAPPImageName:(NSString *)appImageName {
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"character"];
self = (AppNode *)[SKSpriteNode spriteNodeWithTexture:[atlas textureNamed:appImageName]];
if(self)
{
self.name = @"appNode";
if([self isKindOfClass:[AppNode class]])
{
self.position = [self GetPosition];
}
}
return self;
}