在iphone开发中初始化类的问题

时间:2012-08-01 22:34:33

标签: objective-c cocos2d-iphone initialization

嘿伙计们对于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.任何人都可以帮助我。

2 个答案:

答案 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方法已被调用。