не могу найти функцию в классе - PullRequest
0 голосов
/ 18 февраля 2012

Я создал класс в Objective-C и сделал экземпляр в другом классе, мой код выглядит следующим образом ...

    #pragma mark - HelloWorldLayer

    @interface HelloWorldLayer()
    -(void) initPhysics;
    @end

    @implementation HelloWorldLayer

    -(id) init
    {
        if( (self=[super init])) {

            // init physics
            [self initPhysics];

            //THE CLASS I'M HAVING TROUBLE WITH
            id player;

            player = [Blob new];

            //SAYS SET NODES CAN'T BE FOUND
            [player setNodes];

            [self scheduleUpdate];
        }
        return self;
    }

    -(void) initPhysics
    {
        //BLAHBLAHBLAH
    }

    -(void) draw
    {
        //BLAHBLAHBLAH
    }

    -(void) update: (ccTime) dt
    {
        //BLAHBLAHBLAH
    }

    - (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
        //BLAHBLAHBLAH

    }

    @end

    #pragma mark - HelloWorldLayer

    @interface Blob()
    -(void) setNodes;
    @end

    @implementation Blob

   -(void) setNodes;
    {
        b2BodyDef bodyDef;
        b2Body *body;

        bodyDef.type = b2_dynamicBody;

        bodyDef.position.Set(100/PTM_RATIO,100/PTM_RATIO);

        body = world->CreateBody(&bodyDef);

        // Define another box shape for our dynamic body.
        b2CircleShape circle;
        circle.m_radius = 32/PTM_RATIO;

        // Define the dynamic body fixture.
        b2FixtureDef fixtureDef;
        fixtureDef.shape = &circle; 
        fixtureDef.density = 0.5f;
        fixtureDef.friction = 0.5f;
        fixtureDef.restitution = 0.0f;
        body->CreateFixture(&fixtureDef);

    }

    @end

Я кодирую игру с cocos2d и box2d для iphone, и я вынул большую часть кода. Но у меня проблема с классом BLOB-объектов. Я создаю экземпляр с именем player и пытаюсь вызвать функцию "setNodes". И моя проблема в том, что каждый раз, когда я компилирую, я получаю предупреждение, что setNodes не может быть найден ... Я чувствую, что сделал что-то не так, потому что я знаю, что это там .. Objective-c - это круто. Я человек C ++, спасибо:)

1 Ответ

2 голосов
/ 18 февраля 2012

setNodes должно быть объявлено перед строкой:

[player setNodes];

Вы, вероятно, должны объявить свои классы в файле .h и импортировать его, как вы это делаете в C ++.

Или, по крайней мере, поместить объявление Blob перед реализацией HelloWorldLayer

@interface Blob()
    -(void) setNodes;
@end

@implementation HelloWorldLayer
// ...
...