2012-04-24 2 views
0

Эй У меня есть код, который возвращает сообщение об ошибке, но я не могу понять, в чем проблема. Я довольно новичок в синтаксисе Objective-c, поэтому это может быть что-то довольно простое, однако я не могу найти проблему. МетодНеверный инициализатор для CGPoint

-(void)setPlayerPosition:(CGPoint) position { 
    CGPoint tileCoord = [self tileCoordForPosition:position]; 
    int tileGid = [metaLayer tileGIDAt:tileCoord]; 
    if (tileGid) { 
     NSDictionary *properties = [tileMap propertiesForGID:tileGid]; 
     if (properties) { 
      NSString *collision = [properties valueForKey:@"Collidable"]; 
      if (collision && [collision compare:@"True"] == NSOrderedSame) { 
       return; 
      } 
      NSString *collectable = [properties valueForKey:@"Collectable"]; 
      if (collectable && [collectable compare:@"True"] == NSOrderedSame) { 
       [metaLayer removeTileAt:tileCoord]; 
       [foreground removeTileAt:tileCoord]; 
      } 
     } 
    } 
    player.position = position; 
} 

Он возвращает ошибку Invalid инициализатору на 2-й линии, а также говорит, что мой класс не может ответить «tileCoordForPosition:» Любая помощь будет оценен по достоинству!

ответ

0

Вам нужно объявить tileCoordForPosition: в заголовке, чтобы компилятор знал, какой тип он возвращает (в данном случае CGPoint).

1

Я предполагаю, что вы после статьи в http://www.raywenderlich.com/1186/collisions-and-collectables-how-to-make-a-tile-based-game-with-cocos2d-part-2

Так после краткого чтения это сам, я думаю, вы либо не хватает метода требуется или не объявляя его должным образом в вашем классе.

Вы должны быть следующий метод объявлен и реализован

- (CGPoint)tileCoordForPosition:(CGPoint)position 

И это должно быть в том же классе, где вы вызываете его на себя

[self tileCoordForPosition:position] 

Если у вас есть этот метод реализован в ваш класс, то убедитесь, что вы тоже декларируете его. Попробуйте добавить его в начало своего .m файла, подобного этому

@interface YourControllerNameHere() 

- (CGPoint)tileCoordForPosition:(CGPoint)position; 

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