Objective c CGPoint的初始值设定项无效

Objective c CGPoint的初始值设定项无效,objective-c,Objective C,嘿,我有一些代码不断返回错误消息,但我不知道问题出在哪里。我对Objective-c语法相当陌生,所以它可能相当简单,但是我似乎找不到问题。方法是 -(void)setPlayerPosition:(CGPoint) position { CGPoint tileCoord = [self tileCoordForPosition:position]; int tileGid = [metaLayer tileGIDAt:tileCoord]; if (tileGid)

嘿,我有一些代码不断返回错误消息,但我不知道问题出在哪里。我对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;
}

它返回第二行的错误无效初始值设定项,并表示我的类可能不会响应“TileCordForPosition:”任何帮助都将不胜感激

您需要在头文件中声明
tilecordforposition:
,以便编译器知道它返回的是什么类型(在本例中是一个CGPoint)。

我假设您在

因此,在我自己简单地阅读了它之后,我猜测您要么缺少所需的方法,要么没有在类中正确地声明它

您应该声明并实现以下方法

- (CGPoint)tileCoordForPosition:(CGPoint)position
它应该在同一个类中,正如你自己所说的

[self tileCoordForPosition:position]
如果您确实在类中实现了该方法,那么请确保您也正确地声明了它。尝试将其添加到
.m
文件的顶部,如下所示

@interface YourControllerNameHere()

- (CGPoint)tileCoordForPosition:(CGPoint)position;

@end