0
我想了解使用[super init]
与[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;
}