在iOS上,两个UIDragItem.itemProvider.loadObject方法是否存在竞争条件?

时间:2018-10-19 03:28:38

标签: ios iphone swift

我正在实现将图像从Safari拖放到我自己的应用程序的collectionView中的功能。我需要dragItem中的 UIImage 图像网址

获取任何一个的方法是使用UIDragItem.itemProvider.loadObject。但是由于loadObject(ofClass:completionHandler:)运行asynchronously,下面的代码如何确保没有竞争条件?

(注意:这两个函数位于performDropWith函数中,我想确保它们按顺序执行,因为我需要在第二个函数完成后立即进行工作)

var imageARAndURL = [String: Any]()

_ = item.dragItem.itemProvider.loadObject(ofClass: UIImage.self) { (provider, error) in
    if let image = provider as? UIImage {
        let aspectRatio = image.size.height / image.size.width
        print(aspectRatio)
        imageARAndURL["aspectRatio"] = aspectRatio
    }
}

_ = item.dragItem.itemProvider.loadObject(ofClass: URL.self) { (provider, error) in
    if let url = provider {
        print(url.imageURL)
        imageARAndURL["imageURL"] = url.imageURL
        print(imageARAndURL)
    }
}

0 个答案:

没有答案