我有一个非常大的NSArray
,有近100张图像,我在桌面视图中显示这些图像。我的问题是,在滚动数组后,我的项目因内存警告而崩溃。我没有收到任何错误或其他问题只是Xcode记录Received Memory Warning
消息4-5次然后应用程序崩溃。
我尝试使用didReceiveMemoryWarning
方法来解决问题,但此解决方案没有帮助。
- (void)didReceiveMemoryWarning {
arrayOfImages = nil;
}
我还在viewDidUnload
方法中尝试过,至少在用户转到另一个视图时清除内存,但它也没有用。
- (void)viewDidUnload {
arrayOfImages = nil;
[super viewDidUnload];
}
我怎么能解决这个问题?我需要使用那些图像,但在用户检查40-50张图像后崩溃真的很烦人。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *tableIdentifier = @"imgCell";
BTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:tableIdentifier];
cell.imgView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.jpg", [arrayOfImages objectAtIndex:indexPath.row]]];
return cell;
}
答案 0 :(得分:1)
来自imageNamed的文档:,
此方法在系统缓存中查找具有的图像对象 指定名称并返回该对象(如果存在)...如果您有 图像文件只显示一次并希望确保它 如果没有添加到系统的缓存中,您应该创建 你的图像使用imageWithContentsOfFile:。这将保持你的 系统映像缓存中的一次性映像可能会有所改进 内存使用应用程序的特性。