我正在构建一个随机提取图像的游戏。在做了一些测试后,我意识到如果同一个图像被调用两次,它就会崩溃。我通过完成第一场比赛后了解到这一点,我返回游戏主菜单并选择再次玩。我最终得到了一张在我之前的游戏中已经显示给我的图像,一秒钟后我的应用程序崩溃了。我做了一些测试,在我的第一场比赛中两次显示相同的图像,并在第二次显示图像后一秒钟崩溃。
这是一个示例代码。“idNum”和“timer”在 .h 文件中声明,因此它们是全局的。如您所见,我有每秒运行一次的 NSTimer 来随机化要拉出的新图像。在尝试第二次显示图像之前查找作品。假设我得到 1,3,2,5,3 的随机顺序。它将在第二个 3 崩溃。
你不能两次调用图像吗?我只能认为这是一个缓存问题,我不确定如何释放图像缓存。我收到错误 objc_msgSend。抱歉,在调试崩溃方面不太擅长。
//idNum = the randomly generated integer
//pictures are called by numbers ex(1.jpg, 5.jpg)
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeCounter) userInfo:nil repeats:YES];
-(void)timeCounter {
time = time + 1;
idNum = (arc4random() % 5);
NSString * imgIDnum = [[NSString alloc] initWithFormat:@"%d", idNum];
imgMain = [NSString stringWithFormat:@"%@%@", imgIDnum, @".jpg"];
[imgIDnum release];
UIImage * daImg = [UIImage imageNamed:imgMain];
[imgView setImage:daImg];
}