CGPoint的初始化程序无效

时间:2012-04-24 00:00:10

标签: objective-c

嘿,我有一些代码不断返回错误信息,但我无法弄清问题是什么。我对Objective-c语法相当新,所以它可能是相当简单的,但我似乎无法找到问题。方法是

-(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;
}

它返回错误第二行的无效初始化程序,并且还说我的类可能不响应'tileCoordForPosition:'任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您需要在标头中声明tileCoordForPosition:,以便编译器知道它返回的类型(在本例中为CGPoint)。