一个用于保留和重用对象的队列。
重用队列是一种在对象分配和初始化耗时较多时快速重用对象的方法。此重用队列受到UITableView重用cells、headers和footers的启发。
您可以选择克隆此仓库并将`ACReuseQueue`目录中的文件添加到您的项目中;或者使用CocoaPods。
向Podfile添加Pod条目
pod 'ACReuseQueue', '~> 0.0.1'
通过运行以下命令安装pod(s):
pod install
然后您可以使用默认队列:
ACReuseQueue *myQueue = [ACReuseQueue defaultQueue];
或者分配和初始化您自己的队列。
要重用对象,请调用dequeueReusableCellWithIdentifier:
[myQueue dequeueReusableObjectWithIdentifier:@"myIdentifier"];
当您完成对对象的使用后,可以通过enqueueReusableObject:将其返回到队列中
[myQueue enqueueReusableObject:myObject];
要重用,对象必须符合ACReusableObject并实现reuseIdentifier
@property (nonatomic, copy) NSString *reuseIdentifier;
如果对象可以实现prepareForReuse方法,它将在对象通过__dequeueReusableCellWithIdentifier:_返回之前被调用
您可以使用registerClass:forObjectReuseIdentifier:或registerNib:forObjectReuseIdentifier:注册类或nib的给定的标识符。如果在出列时没有可用对象,它将自动为您创建一个对象
[[ACReuseQueue defaultQueue] registerClass:ACButton.class forObjectReuseIdentifier:@"button"];
或
[[ACReuseQueue defaultQueue] registerNibWithName:NSStringFromClass(ACButton.class)
bundle:nil
forObjectReuseIdentifier:@"button"];
如果您已安装appledoc,可以通过运行相应的目标来生成文档。
在`ACReuseQueueDemo`目标中包含一个示例应用程序,以比较有和无重用队列时的性能。您最好在真实设备上运行该应用程序。
演示应用程序具有一个页面视图控制器,其中每个页面包含大约200个按钮(我知道这个示例有些牵强,但它有助于揭示性能差异)。快速和慢速滑动以欣赏差异。
以下是我在iPad mini上进行的测试结果(注意:您的性能可能会有所不同)
a) 没有重用队列
使用重用队列: