保存多张图片
好了,函数签名就介绍完了,本身并不复杂,如果你在搜索引擎中查找的话,可能会看到很多例子会这样写:
UIImageWriteToSavedPhotosAlbum(imageWantToSave,nil,nil,nil)
只传入了第一个 image 参数,后面三后参数都传入nil。 这样调用在大多数情况下也都没有问题。图片正常的保存到了系统相册,一行代码完成了我们的需求,看起来方便又好用。
但在某些情况下,这个调用方式就会有问题了。比如这样:
forimageinimageList {UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil)}
这里的imageList是一个图片数组,会包含多张图片,如果运行这样的代码,你就会发现你的图片保存会经常出错。 比如imageList里面有 10 张图片,可能在有些时候只能成功保存 4 张,后面的 6 张图片既没看到报错信息,也没成功。 但在另一些时候又能成功的把这 10 张图片都保存下来。
这种介于中间态的不确定状态是最让人头疼的。说它有问题,但不是每次都失败。说它没问题,但总有一些时候会失败,而且频率还不低。甚至会引起你对系统库本身稳定性的怀疑。
其实导致这个问题的原因,就是你少传入了第 2,3 个参数。 当然,如果说是系统库稳定性的问题,也不是完全没有道理。 不过与其说是稳定性,更提贴切的说法是这个函数的接口设计不够完善,容易让大家造成误解。
第 2,3 个参数用于指定一个接收完成事件的实例和方法,可以这样:
funcsaveImage(