在学习 Xcode 和 Objective-C 的同时尝试开发一个简单的游戏。
我试图让一个从屏幕顶部落下的物体降落在平台上。有多个平台都是 UIImageViews。
我想为对象可以登陆的平台使用一个数组,而不是为每个平台输入 if 语句。我环顾了其他人的问题,并根据他们的想法尝试了想法。到目前为止,这是我的游戏循环中的内容:
CGRect platformFrame = [(UIView *)[platformArray objectAtIndex:i] frame];
if (CGRectIntersectsRect(object.frame, platformFrame)) {
objectVelocity.y += gravity.y;
objectVelocity.x = 0;
}
这就是我在“viewDidLoad”中将对象添加到数组中的内容:
platformArray = [[NSMutableArray alloc] init];
[platformArray addObject:platform1];
[platformArray addObject:platform2];
[platformArray addObject:platform3];
目前这会返回一个错误:“线程 1:程序接收到的信号:“SIGARBT”。”
我读过这是使用 NSMutableArray 的结果。
由于错误,目前我无法判断我的代码是否有效。所以我想知道是否有更好的方法,或者解决 SIGARBT 错误的方法。
任何帮助将不胜感激。
更新:感谢您的快速回复!希望这会奏效,但不幸的是我仍然收到 SIGARBT 错误,所以我看不到结果。
至于有关此错误的更多详细信息,它会在我尝试运行该应用程序时出现,尽管在此之前它声明“没有问题”。
错误出现在 main.m 中:
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
错误出现在以“return”开头的行上
我读到使用 NSMutableArray 会导致这种情况。
“从 NSUserDefaults 返回的值是不可变的,即使您将可变对象设置为值。”
所以我不确定如何解决它。