应用程序启动后加载 iOS 渐进式 Assets (或 Assets 包)

标签 ios asynchronous bundle preload assets

我希望为我的 iOS 应用程序添加更多渐进/渐进式 Assets 加载,有点像 ZeptoLab 为 Cut the Rope 所做的。我想减少用户在加载应用程序时花在静态 Default.png 上的时间,并希望更快地到达一些启动屏幕,在那里我可以显示进度条(我花了一些时间在 Flash 中开发,其中“预加载器' 是常态)。

我了解到我可能必须为此使用 Assets 包。我想在 Xcode 中保留所有文件,而不是从其他位置加载。

所以我看到了有关如何加载 Assets 包的示例 -

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"MyBundle"  ofType:@"bundle"];
NSString *imageName = [myBundle pathForResource:@"someImage" ofType:@"png"];

但我想找到有关如何:

  • 异步运行,我猜是使用另一个线程
  • 跟踪这个包已经加载了多少
  • 知道这个包包含多少,所以我可以计算已加载的包的百分比。

我还想知道 - 使用 Assets 包是否会改变我的 iOS 应用程序加载文件的方式/时间?

或者选择不将文件添加到我的 Xcode 项目设置中的复制/构建阶段的正确方法是什么?

谢谢大家!

最佳答案

幸运的是,文件系统访问是线程安全的,因此在线程上加载文件正是您所需要的。我听说过一些针对 ios 的大型中央调度程序……但是 pthreads 也工作得很好。我没有可以分享的示例代码,但我可以说,如果您已经在某种程度上理解了线程原语(例如,使用原子操作的锁或什至无锁技术等),这并不难

你不必使用单独的包来实现这一点——尽管使用它们也没有坏处(例如,将你想要动态加载的 Assets 分开)

关于应用程序启动后加载 iOS 渐进式 Assets (或 Assets 包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298423/

相关文章:

javascript - Firebase:child_added 完成后如何获取数据

javascript - 如何在nodejs中正确使用async和await?

ios - 如何在具有相同协议(protocol)变量的 Swift 中使用多个协议(protocol)?

ios - Xcode 10.0 : Failed with exit code 1

ios - UITableView错误: use of undeclared type 'Foundation'

python - 有什么方法可以从 Python [Django] 进行异步函数调用吗?

iOS 使用步进器控制 slider 值和文本标签值

php - Symfony 2 kpn snappy 生成 pdf 输出符合安全区域

java - Android Bundle 与字符串的比较

xcode - 如何将文件放入应用程序包内的自定义位置?