我一直在多个平台上测试 IOS 应用程序,并在 iPhone 4S 上进行测试时观察到一些奇怪的行为。该应用程序在执行适用于 iPhone 5 和 iPhone 3S 的任务后崩溃。当崩溃发生时,调试器上没有任何显示,Xcode 中绝对不会出现崩溃日志或内存警告。我隔离了代码块以及导致崩溃的特定行。我仍然不明白为什么会这样或如何找到解决方案。该代码是一个更大的方法的一部分,该方法下载许多图像并将它们显示在 UIImageViews 中。这是代码:
//fill image tiles with images
for (int i = 0; i < [objects count]; ++i)
{
PFObject *imageObject = [objects objectAtIndex:i];
PFFile *imageFile = (PFFile *)[imageObject objectForKey:@"image"];
UIImageView *imageHolder = (UIImageView *)[self.view viewWithTag:(100 + i)];
imageHolder.image = [UIImage imageWithData:imageFile.getData];
}
代码循环访问已从服务器加载图像文件的对象。每个图像要分配到的 UIImageView 标记为 100 - 104,因此可以使用循环索引变量访问它们。该行UIImageView *imageHolder = (UIImageView *)[self.view viewWithTag:(100 + i)]
从主视图中提取 UIImageViews。在下一行中,imageHolder 视图被分配了一个图像,这是导致崩溃的行,并且当注释掉视图时加载不会失败。我无法确定为什么会发生这种情况,或者是否是 imageFile 或 imageHolder 视图设置不正确。也许这里有人可以阐明这个问题。