在iOS上异步将本地映像加载到阵列中
我需要将捆绑包中的大约200个图像加载到内存中的数组中,如下所示:在iOS上异步将本地映像加载到阵列中,ios,swift,grand-central-dispatch,dispatch-async,Ios,Swift,Grand Central Dispatch,Dispatch Async,我需要将捆绑包中的大约200个图像加载到内存中的数组中,如下所示: let img: UIImageView() img.animationImages = arr img.duration = 1 img.startAnimating() 让arr=(0..您可以创建一个回调,并在后台线程上加载图像后调用它,因为图像将在那里同步加载 我建议这样做: func loadImages(callback: @escaping ([UIImage]) -> Void) { Dispat
let img: UIImageView()
img.animationImages = arr
img.duration = 1
img.startAnimating()
让arr=(0..您可以创建一个回调,并在后台线程上加载图像后调用它,因为图像将在那里同步加载
我建议这样做:
func loadImages(callback: @escaping ([UIImage]) -> Void) {
DispatchQueue.global(qos: .background).async {
let array = (0..<200).flatMap({ UIImage(named: "\($0).png") })
callback(array)
}
}
您可能需要调度回调(数组)
返回调度队列。main
这将一次将200个UIImages加载到内存中。如果图像不是很小,您的应用程序可能会由于内存问题而崩溃。它们很小——我已经尝试过,但不会崩溃。就像我说的那样,只需花费很长时间。为什么需要将所有图像都加载到内存中?最好创建一个urlsT数组我从文件URL加载图像而不是使用命名的初始值设定项为什么需要这样做?这是错误的做法是的,这就是我最后所做的。结果很好。无论如何,感谢您的发布-接受您的答案!
loadImages { images in
// do something with the images
}