今天刚用上Xcode 7,发现target tab出现Resources Tags(苹果文档部分配图是Asset Tags),立马查询一番。
参考On_Demand_Resources_Guide发现Resources Tags是Xcode7新增,主要作用是给资源文件添加标签,集合iOS9新增的APINSBundleResourceRequest,达到按需下载资源的目的。
流程
- 确定资源分级,哪些是必须的,哪些是延迟加载的,哪些是可以远程的资源。
- Xcode的Resource Tags选项中,添加Tag,并在
Prefetched设置优先级,Images.xcassets里的图片也可以设置Tags。 - 使用
NSBundleResourceRequest根据tags获取资源,它是iOS9新增类,具体参考NSBundleResourceRequest_Class,重点有初始化、下载、优先级、progress属性和结束。 - 配置存放资源的服务端。
- 通过
Xocde Archive工具导出Asset Packs,将asset packs拷贝到自己的服务端。 - Xcode
Build Settings里设置服务端asset URL。
思考
苹果文档中拿了游戏作为例子,在第一关的时候,下载第二关的资源文件,对游戏而言,真实的减少了包的大小。
有大资源的应用可以根据版本使用起来,少量资源文件的应用还想到有哪些使用场景?根据不同情况加载不同的资源包?
On-Demand Resources支持Data file、Image、OpenGL shader、SpriteKit *、WatchKit complication以及Apple TV Image Stack,感觉Apple在下一盘很大的棋。
其他
一篇翻译一半的中文版资料:按需加载资源开发指南-@BenBeng
实战Demo待补充,还没来得及写。