iOS上可以使用内存映射图像吗?

时间:2013-01-22 13:26:44

标签: ios image memory memory-mapped-files memory-mapping

今天我醒来的时候,我认为这是一个很重要的想法,也可能是一个完全愚蠢的想法。我需要编写一个iOS应用程序,它使用大约5k像素正方形的巨大可滚动图像,由于内存限制无法在iOS上加载如此大的图像。
我确实知道CATileLayer,但小滞后不符合我的要求。 所以我认为可以存储映射文件并从中读取图像。不幸的是它不起作用,这里是代码剪切:

    NSError * __autoreleasing error = nil;
    NSData * mappedData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"tigerbig" ofType:@"png"] options:NSDataReadingMappedAlways | NSDataReadingUncached error:&error];
    UIImage * thebigImage =[UIImage imageWithData:mappedData];
    self.imageView.image = thebigImage;

在图像视图必须显示大图像之前,一切似乎都有效。我记得UIImageCGImage周围的一个小包装,在图像需要渲染之前它不会加载图像。
可能在从NSData创建图像的序列中,数据被复制到RAM中,触发内存警告,而不是应用程序崩溃。
所以我尝试使用ImageIOCGDataProvider进行varius组合,但没有成功。
现在我告诉自己,主要想法可能完全错了,有人能指出我正确的方向吗?

0 个答案:

没有答案