嘿,我有一些代码不断返回错误信息,但我无法弄清问题是什么。我对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:'任何帮助都将不胜感激!
答案 0 :(得分:1)
因此,在我自己简单阅读之后,我猜你是要么缺少所需的方法,要么在你的课堂上没有正确宣布它。
您应该声明并实现以下方法
- (CGPoint)tileCoordForPosition:(CGPoint)position
它应该与你在自己称呼它的同一个班级
[self tileCoordForPosition:position]
如果您确实在班级中实施了该方法,那么请确保您也正确地声明了该方法。尝试将其添加到.m
文件的顶部,如此
@interface YourControllerNameHere()
- (CGPoint)tileCoordForPosition:(CGPoint)position;
@end
答案 1 :(得分:0)
您需要在标头中声明tileCoordForPosition:
,以便编译器知道它返回的类型(在本例中为CGPoint)。