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;
}