在iPhone App中存储和重载UIImage后丢失的数据

时间:2014-01-28 20:41:42

标签: ios iphone ios7 uiimage

我开发了一款iOS7应用。我使用UIImagePickerController来获取UIImage。在使用应用程序期间的图像 存储到本地app目录并加载。该文件将被覆盖几次。我使用UIImagePNGRepresentation和NSData storeToFile来存储 图片。为了加载图像,我使用UIImage initWithContentsOfFile。 它适用于某些商店和加载过程。使用调试器,我可以确认图片已正确存储和加载。 但是一段时间后,存储的图片不再包含图片了。当我用调试器查看加载过程时,我可以看到 图片已加载但似乎完全透明,没有其他信息。 这种现象仅发生在设备上,而不是在使用模拟器进行模拟时。此外,只有当应用程序被踢出内存时才会出现效果(双击主页按钮)

我调试了几个小时的应用程序,但我无法想象这种行为的原因。此外,由于应用程序的完全终止,很难调试。有人知道解决方案或遇到过同样的问题吗?任何人都可以给我一个提示调试什么来追踪问题吗?

提前致谢。任何帮助表示赞赏。 :)

感谢您的回答。这是一段代码摘录:

存储图片的代码: 在文档目录中生成文件路径

NSString *name = [NSString stringWithFormat:@"ImageforButton%i.png",i];
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *file = [[path objectAtIndex:0] stringByAppendingPathComponent:name];

从UIImage创建NSData(图像是始终具有正确图像数据的UIImage)

NSData *picData = UIImagePNGRepresentation(image); 

将NSData写入文件

[picData writeToFile:file atomically:true];

加载图片的代码: 生成文件路径

NSString *name = [NSString stringWithFormat:@"ImageforButton%i.png",i];
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *file = [[path objectAtIndex:0] stringByAppendingPathComponent:name];

加载图片 UIImage * img;

if ([[NSFileManager defaultManager] fileExistsAtPath:file isDirectory:false] == true)
{
img = [UIImage imageWithContentsOfFile:[self saveFilePath:name]];
}

img并不总是包含正确的数据。在应用程序完全终止之前img 包含预期的图片。应用程序完全终止后有效 UIImage可以加载到img但似乎只包含透明图片。 总而言之,它不再包含正确的图片了。

0 个答案:

没有答案