gpt4 book ai didi

iphone - iPhone UIImage-如果两次出现在同一图像上,图像随机化器将崩溃

转载 作者:行者123 更新时间:2023-12-03 16:18:04 24 4
gpt4 key购买 nike

我正在构建一个随机提取图像的游戏。做完一些测试后,我意识到如果两次调用同一张图像,它将崩溃。在完成第一个游戏后,我学到了这一点,我回到了游戏主菜单并选择再次玩。我最终得到一张图像,该图像已经在我以前的游戏中显示过,而第二秒之后我的应用程序崩溃了。我进行了一些测试,使同一张图片在我的第一场比赛中出现了两次,并且在第二次显示该图片后第二次崩溃了。

这是示例代码。 .h文件中声明了“idNum”和“timer”,因此它们是全局的。如您所见,我有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];



}

最佳答案

您应该提供有关崩溃的更多信息。是在上面的+imageNamed:行中,还是在-setImage:中?

最可能的原因是您过度释放了UIImage。例如,如果您在上述代码之后调用[daImg release],那么您将得到此行为,因为您将过度释放UIImage类正在缓存的内容。除非您描述了这种情况,否则不会导致崩溃。

我已经看到了此错误的一个非常有趣的版本:我的一个队友过度释放了一个NSNumber(大多数时候恰好是整数2)。 NSNumbers在内部缓存,因此,下次他在程序的无关部分为整数2创建NSNumber时,它将崩溃。任何其他数字都可以,但请尝试NSLog() 2,然后繁荣。

关于iphone - iPhone UIImage-如果两次出现在同一图像上,图像随机化器将崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1370301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com