嘿伙计们对于noob问题感到抱歉,但是我很难初始化我自己创建的一个我开始制作的iphone游戏课程。在我开始实际开发游戏之前,我运行了一个快速测试,看看我已经运行的是什么,而我正在测试的类不会初始化。这就是我所拥有的:
@implementation Game
SceneController *sceneController;
+(id)scene {...} // just the default scene method created by cocos2d
-(id)init{
if((self=[super init])){
[[sceneController performSelector:@selector(alloc)]performSelector:@selector(init)];
CGSize size = [[CCDirector sharedDirector] winSize];
CCLabelTTF *label=[CCLabelTTF labelWithString:[NSString stringWithFormat:@"%i",[sceneController performSelector:@selector(xxx)]] fontName:@"Marker Felt" fontSize:64];
[self addChild: label];
}
return self;
}
// IN ANOTHER CLASS
@implementation SceneController
int xxx; // not a real variable just used for the test
-(id)init{
if((self=[super init])){
xxx=432;
}
return self;
}
-(int)xxx{
return xxx;
}
我的问题是,而不是标签阅读432就像它应该只是说0.任何人都可以帮助我。
答案 0 :(得分:2)
[[sceneController performSelector:@selector(alloc)] performSelector:@selector(init)];
哇。这就像通过行李箱进入汽车。有趣这仍然有效。或者它可能没有,这就是你得到错误的原因。
无论如何,要对一个类进行初始化(以及任何Objective-C教程都会教你),你可以这样做:
sceneController = [[SceneController alloc] init];
您还应该在init方法中添加一个断点,以测试它是否实际运行。
答案 1 :(得分:1)
您似乎没有正确构建SceneController
对象。
在你的init
游戏方法中,你需要拨打这样的电话:
sceneController = [[SceneController alloc] init];
而不是:
[[sceneController performSelector:@selector(alloc)]performSelector:@selector(init)];
然后,您的sceneController
实例变量已正确初始化,并且您的init
方法已被调用。