NSBundleResourceRequest是iOS9的新特性,主要用于按需加载资源的下载控制。按需加载资源是由App Store托管的内容,它和下载的app bundle是分开的。app请求一系列按需加载资源,而下载和存储资源是由操作系统来管理。这些资源可以是除可执行代码外,bundle支持的任何类型。
支持的类型
Type | Asset catalog | File |
---|---|---|
Data file | ✓ | ✓ |
Image | ✓ | ✓ |
OpenGL shader | – | ✓ |
SpriteKit particle | – | ✓ |
SpriteKit scene | – | ✓ |
SpriteKit texture atlas | ✓ | ✓ |
Apple TV Image Stack | ✓ | ✓ |
按需加载资源的好处有如下几点:
按需加载资源的生命周期如下所示:
可以用如下方式快速创建tag
在Resource Tags选项卡的Prefetched界面下,可以把tag分配给三个预获取优先级分类的其中一个。
/// 初始化NSBundleResourceRequest
///
/// - parameter tags : 相关tags
///
/// - returns: NSBundleResourceRequest
public convenience init(tags: Set<String>)
/// 初始化NSBundleResourceRequest
///
/// - parameter tags : 相关tags
/// - parameter bundle : 包
///
/// - returns: NSBundleResourceRequest
public init(tags: Set<String>, bundle: NSBundle)
/// 加载的tags
public var tags: Set<String> { get }
/// 对应的NSBundle
public var bundle: NSBundle { get }
// 开始加载资源
public func beginAccessingResourcesWithCompletionHandler(completionHandler: (NSError?) -> Void)
// 资源是否加载完成
public func conditionallyBeginAccessingResourcesWithCompletionHandler(completionHandler: (Bool) -> Void)
// 取消加载资源
public func endAccessingResources()
/// 加载级别(0...1,默认0.5)
public var loadingPriority: Double
// 资源加载管理器
public var progress: NSProgress { get }
Swift
NSBundleResourceRequest Class Reference
On-Demand Resources Essentials
NSBundle Class Reference
时间 | 描述 |
---|---|
2016-03-15 | 博文完成 |
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog