removeFromSuperview() 耗时过长
Posted
技术标签:
【中文标题】removeFromSuperview() 耗时过长【英文标题】:removeFromSuperview() takes too long 【发布时间】:2015-08-19 12:16:15 【问题描述】:在使用 imagePickerController 选择图像后,我尝试使用 Core Data 从 ViewController.swift 中保存一个对象。我在保存时显示一个带有微调器的视图(DynamicView)。对象在 1 或 2 秒内保存,但 DynamicView 需要 7 或 8 秒才能从 superView 中删除。
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject])
dismissViewControllerAnimated(true, completion: nil)
picture = info[UIImagePickerControllerOriginalImage] as? UIImage
view.addSubview(DynamicView)
var newImageData = UIImageJPEGRepresentation(picture, 1)
objectToSave?.photo = newImageData
progressBarDisplayer("test", true)
dispatch_async(dispatch_get_global_queue(
Int(QOS_CLASS_USER_INTERACTIVE.value), 0))
self.save()
func save()
var error : NSError?
if(!managedObjectContext!.save(&error) )
println(error?.localizedDescription)
else
println("No error, saved")
self.DynamicView.removeFromSuperview()
NSNotificationCenter.defaultCenter().postNotificationName("load", object: nil)
【问题讨论】:
【参考方案1】:从主线程调用 removeFromSuperview() 以确保您的 UI 是同步的:
func save()
var error : NSError?
if(!managedObjectContext!.save(&error) )
println(error?.localizedDescription)
else
println("No error, saved")
dispatch_async(dispatch_get_main_queue(),
self.DynamicView.removeFromSuperview()
NSNotificationCenter.defaultCenter().postNotificationName("load", object: nil)
【讨论】:
以上是关于removeFromSuperview() 耗时过长的主要内容,如果未能解决你的问题,请参考以下文章