在iOS上异步将本地映像加载到阵列中

在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

我需要将捆绑包中的大约200个图像加载到内存中的数组中,如下所示:

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
}