iOS 开发批量保存图片到相册时丢图片的解决方法
2015-09-02 10:11
686 查看
原文:http://www.99css.com/1425/
同一个问题(前一次是一年多前,写完就忘了)栽了两次,纪录一下。
症状
在循环语句中批量保存图片到相册时在低配置的设备中会有丢失的情况,代码一般是这个样子
debug了一下,错误是
原因
iOS 往系统相册写照片的时候是单线程,一张存完才会存下一张,可能是因为要经过这几个过程:压缩图片、生成缩略图、SQLite保存数据,低配置的机器(比如 iPhone4)有点慢,同时写入照片会有失败的情况,我大 iPhone5 无压力
解决方法
知道原因后就好解决了,方法就是一张存成功再存下一张
先保存成数组
再递归
同一个问题(前一次是一年多前,写完就忘了)栽了两次,纪录一下。
症状
在循环语句中批量保存图片到相册时在低配置的设备中会有丢失的情况,代码一般是这个样子
for (int i = 0; i < n; i++) { UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); }
debug了一下,错误是
write busy
原因
iOS 往系统相册写照片的时候是单线程,一张存完才会存下一张,可能是因为要经过这几个过程:压缩图片、生成缩略图、SQLite保存数据,低配置的机器(比如 iPhone4)有点慢,同时写入照片会有失败的情况,我大 iPhone5 无压力
解决方法
知道原因后就好解决了,方法就是一张存成功再存下一张
先保存成数组
for (int i = 0; i < n; i++) { UIImage *image = ...; [listOfImages addObject:image]; }
再递归
-(void) saveNext{ if (listOfImages.count > 0) { UIImage *image = [listOfImages objectAtIndex:0]; UIImageWriteToSavedPhotosAlbum(image, self, @selector(savedPhotoImage:didFinishSavingWithError:contextInfo:), nil); } else { [self allDone]; } } -(void) savedPhotoImage:(UIImage*)image didFinishSavingWithError: (NSError *)error contextInfo: (void *)contextInfo { if (error) { //NSLog(@"%@", error.localizedDescription); } else { [listOfImages removeObjectAtIndex:0]; } [self saveNext]; }
相关文章推荐
- ios 修改字体
- iOS多线程——GCD
- iOS多线程——基础
- 启动控制器的创建
- iOS 定位 点击设置->隐私->定位 闪退的问题
- iOS截屏
- 苹果开发 笔记(69)SVProgressHUD
- iOS archive(归档)的总结
- 礼拜三,兔子回归,继续上次的苹果开发~
- 使用Xcode 7 beta免费真机调试iOS应用程序
- 利用nagios搭建打印机监控服务器
- ios开发中,关闭由于SEL引起的警告
- iOS:学习runtime的理解和心得
- ios开发之分享应用拓展share extension一
- iOS8 毛玻璃效果实现
- ios线程和GCD
- iOS开发 顶部状态栏的隐藏
- iOS 7 交互界面设计总结
- iOS Design Patterns Excerpt
- The Core iOS CookBook 第一章节学习笔记 - 手势和触控