gpt4 book ai didi

iphone - 在 iOS 上预加载 Assets

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:43 27 4
gpt4 key购买 nike

假设你有几个动画,我们想用 UIImageView 中的一系列 PNG 来实现。如果我们在动画中有很多图像,我们在发送消息 [myImgView startAnimation] 时会有延迟,这是因为所有图像都在内存中加载。我注意到加载是惰性的:只要不发送 startAnimation 消息,图像就不会加载到内存中。为了避免延迟问题,我在应用程序委托(delegate)中加载了所有动画,作为 subview 附加,而不是动画一次。我想了解什么是最佳解决方案?如果我的实际解决方案有缺陷?

最佳答案

关于延迟加载,您是对的。我一直无法确定它实际上是从磁盘延迟假脱机还是延迟解压,但在任何一种情况下,UIImage(以及下面的 CGImage)在实际使用之前不一定完全处理并准备好绘制。我认为它可能会在未来再次变得未就绪,具体取决于 Apple 如何在内部处理内存警告。

如果您真的很热衷,我想最好的解决方案是使用 CoreGraphics 在后台加载和解压缩图像,仅当加载尚未完成时才在 startAnimation 时暂停以完成加载。您无法直接使用 UIKit 对象实现这一点,因为它们只能在主线程上无法在任何地方调用。您需要获取 CGImage,绘制到位图上下文,然后从位图上下文创建图像并将其发布到主线程以包装到 UIImage 中。使用 NSOperationQueue 来编码完整的操作列表可能是明智的。

假设您不介意加载所有 PNG 时阻塞的额外启动成本,并且正确处理内存警告,那么您当前的方法应该没有任何问题,我想不出更好的方法解决方案,同时保留高级 Objective-C 内容。

关于iphone - 在 iOS 上预加载 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4423917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com