2012-02-18 3 views
0

Я сделал класс в 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 является skrewwy Я C++ человек, большое спасибо :)

ответ

2

setNodes должны быть объявлены до линии:

[player setNodes]; 

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

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

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

@implementation HelloWorldLayer 
// ... 
+0

омг ... мое заявление и мое определение ... чувак вот так коррективных Thankyou так много <3 Я так догнал в изучении языка, который я предполагаю –

Смежные вопросы