应用程序启动后加载iOS Progressive资产(或资产包)

时间:2012-02-15 17:42:51

标签: ios asynchronous bundle preload assets

我希望在我的iOS应用程序中添加更多渐进/渐进式资源加载,有点像ZeptoLab for Cut the Rope。我希望减少用户在加载应用程序时花费在静态Default.png上的时间,并希望更快地到达某个Splash屏幕,我可以在其中显示进度条(我花了一些时间在Flash中开发,'preloaders' “是常态。”

我认为我可能不得不使用资产包。我想仍然拥有Xcode中的所有文件,而不是从其他位置加载。

所以我看过有关如何加载资产包的示例 -

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

但我想找到关于如何:

的例子
  • 以异步方式运行,我想通过使用另一个线程
  • 跟踪此捆绑已加载了多少
  • 知道这个捆绑包含多少,所以我可以计算出已经加载的捆绑包的百分比。

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

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

谢谢大家!

1 个答案:

答案 0 :(得分:0)

谢天谢地,文件系统访问是线程安全的,因此在线程上加载文件正是您所需要的。我听说过ios的一些重要的中央调度事件......但是pthreads工作得很好。我没有可以共享的示例代码,但我可以说,如果您已经在某种程度上理解了线程原语(例如,使用原子操作的锁或甚至无锁技术等),这不是太难。

您不必使用单独的捆绑包来实现此目的 - 尽管使用它们也没有任何危害(例如,要将那些想要动态加载的资产分开)