错误:选择器“addChild”没有已知的类方法
Posted
技术标签:
【中文标题】错误:选择器“addChild”没有已知的类方法【英文标题】:Error: No Known Class method for selector 'addChild' 【发布时间】:2015-01-03 03:31:24 【问题描述】:所以,我创建了一个名为“Level1Class”的新类,并创建了一个名为“level1Layout”的方法。在该方法中,我创建了一个名为“level1ButtonRed”的 SKSprite,当我设置位置并尝试使用
添加它时[self addChild: level1ButtonRed]
它给了我错误
"No Known Class method for selector 'addChild'."
#import "Level1Class.h"
#import "GameScene.h"
@implementation Level1Class
+(void) level1Layout
SKSpriteNode *level1ButtonRed;
level1ButtonRed = [SKSpriteNode spriteNodeWithImageNamed:@"LevelButton_Red"];
level1ButtonRed.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
[self addChild: level1ButtonRed];
@end
#import "GameScene.h"
static NSString *levelButtonRed = @"levelButtonRed";
@implementation GameScene
SKSpriteNode *trans;
-(void)didMoveToView:(SKView *)view
/* Setup your scene here */
trans = [SKSpriteNode spriteNodeWithImageNamed:@"Transparent"];
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
/* Called when a touch begins */
for (UITouch *touch in touches)
CGPoint location = [touch locationInNode:self];
trans.position = location;
[self enumerateChildNodesWithName:@"levelButtonRed" usingBlock: ^(SKNode *node1, BOOL *stop1)
if( [trans intersectsNode:node1])
[Level1Class level1Layout];
];
-(void)update:(CFTimeInterval)currentTime
/* Called before each frame is rendered */
@end
Level1Class.h
#import <SpriteKit/SpriteKit.h>
#import <Foundation/Foundation.h>
@interface Level1Class : NSObject
-(void) level1Layout;
@end
有什么帮助吗??
【问题讨论】:
用导致问题的实际代码更新您的问题。 @rmaddy 所说的,发布代码和来自日志输出编辑的实际错误消息:伙计,我们需要代码......而不是一行 sn-ps。你知道怎么调试吗? Level1Class 的子类是什么?我的猜测是你子类化了错误的类。 @Young_Programmer,如果您在这些论坛上需要帮助,您需要学习如何发布足够的数据以供人们帮助您调试它。假装你正在调试它并发布你需要的数据。 猜测你要么打算将Level1Class
变成SKNode
,但你继承自NSObject
,或者你有一个SKNode
的实例并打算调用addChild:
在那而不是self
。
【参考方案1】:
您将该消息发送到self
内的+level1Layout
。这是一个类方法。因此self
指向类对象。您不能将子对象添加到类对象。您可以将子级添加到该类的实例对象中。
要解决该问题,请先创建一个实例,然后将子级添加到该实例。
【讨论】:
谢谢!这解决了问题!以上是关于错误:选择器“addChild”没有已知的类方法的主要内容,如果未能解决你的问题,请参考以下文章
错误:选择器“isPedometerEventTrackingAvailable”没有已知的类方法
错误:选择器“setScreenName:screenClass:”没有已知的类方法
选择器'circleOfButtons:buttonSize:radius:'没有已知的类方法
选择器'application:openURL:options:sourceApplication:annotation'没有已知的类方法