应用程序崩溃是由于内存警告图像繁重

时间:2014-10-25 14:40:22

标签: ios objective-c xcode

我有一个非常大的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;
}

1 个答案:

答案 0 :(得分:1)

来自imageNamed的文档:,

  

此方法在系统缓存中查找具有的图像对象   指定名称并返回该对象(如果存在)...如果您有   图像文件只显示一次并希望确保它   如果没有添加到系统的缓存中,您应该创建   你的图像使用imageWithContentsOfFile:。这将保持你的   系统映像缓存中的一次性映像可能会有所改进   内存使用应用程序的特性。