这是一个相当简单的界面,只有 appdelegate 和 viewcontroller 处理事情。
我有一个 UITableView 显示指定患者的 1 到 13 个图像缩略图。我正在使用包含单个 UIImageView 的自定义单元格来显示拇指。单元格中的 UIImageView 从通过 HTTP 请求加载的 NSMutableArray 加载到 cellForRowAtIndexPath 中。
HTTP 服务器上每位患者的拇指位于患者文件夹中,分为 1 - 3 个命名系列文件夹。当从 iPad 上的 popOver 中选择患者时,拇指表视图将加载 HTTP 服务器上患者文件夹中的第一个系列。
然后,用户可以从系列名称的弹出框中为患者选择不同的系列。此时,通过 HTTP 请求检索所选系列的缩略图并将其加载到缩略图表视图中。
一切正常,除了我有一个患者,在从患者 popOver 中选择患者后检索到的第一个系列有效,但是更改系列或重新选择已加载的系列会导致应用程序崩溃。它不会在模拟器中崩溃,只会在 iPad 上崩溃。从 xCode 运行时,我可以看到崩溃发生在最后一次调用 cellForRowAtIndexPath 完成后,控制台中没有显示任何错误。如果我越过这一点,它会立即崩溃。
我已经在 appdelegate 和 viewController 方法中实现了内存警告委托方法。我没有收到任何内存警告。
我在下面发布了我的 cellForRowAtIndexPath 方法,以防万一我在加载表格视图时遗漏了一些东西。
我正在寻找除了记忆之外还有什么值得怀疑的建议。有什么方法可以在没有控制台的情况下指示导致崩溃的原因?
提前感谢您的帮助
约翰
更新:我在 section 方法中添加了我的行数,这应该不是问题。
我现在确信问题不一定与我的代码有关,而与图像有关。除了这个患者,我可以整天更换患者和/或患者图像系列而没有任何问题。与该患者相关的一张或多张图像正在占用 iPad 中的内存。每个患者有 1 或 2 张 X 射线,其原始大小在 1 到 2 兆字节之间。在将它们保存到磁盘文件以供 iPad 检索时,我将它们的文件大小(压缩质量)减小到 300kb 以下。单个系列中导入的总大小不超过 1.5mb。至少这是磁盘文件的总大小。一旦 iPad 获得文件大小,我不知道实际发生了什么。
在将导入的图像加载到表视图进行显示之前,有什么方法可以测试它们的大小或损坏吗?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
ImageCell *cell = [thumbsTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[ImageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.pImage.image = [thumbsArray objectAtIndex:indexPath.row];
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [thumbsArray count];
}