此外,如果它应该在后台线程上完成,下面这两个调用之间是否有区别,因为一个保存UIImage而另一个从视图中保存UIImage?
UIImageWritetoSavedPhotosAlbum(_someUIImage,nil,nil);UIImageWritetoSavedPhotosAlbum(_imageVIEw.image,nil);
顺便说一句,我使用这个设置在主线程中运行HUD,在后台运行任务,这是我的意图.
[HUD_code showMessage:@"saving image"];dispatch_queue_t concurrentQueue =dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAulT,0);dispatch_async(concurrentQueue,^{ UIImageWritetoSavedPhotosAlbum(someUIImage,nil); dispatch_async(dispatch_get_main_queue(),^{ [HUD_code dismiss]; });});解决方法 UIKit classes are documented to be usable from the main thread only,除非另有说明. (例如,
UIFont
is documented to be thread-safe.) 关于UIKit函数的线程安全性(与类不同)没有明确的一揽子声明,因此假设它们通常是线程安全的并不安全.某些UIKit函数(如UIGraphicsBeginImageContext
)明确记录为线程安全,这意味着UIKit函数通常不是线程安全的.
由于UIImageWritetoSavedPhotosAlbum可以发送异步完成消息,您应该在主线程上调用它并使用其完成支持来执行[HUD_code dismiss].
总结以上是内存溢出为你收集整理的iOS:dispatch_async和UIImageWriteToSavedPhotosAlbum全部内容,希望文章能够帮你解决iOS:dispatch_async和UIImageWriteToSavedPhotosAlbum所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)