ReusableViewPool
open class ReusableViewPool : NSObject
通用可重用视图缓存池,可继承
使用方式如下,代码示例详见WebView:
- 应用启动完成时配置全局重用初始化句柄并调用enqueueReusableView(with: ReusableViewType.self)预加载第一个视图
- 重用视图初始化时调用:let reusableView = ReusableViewPool.shared.dequeueReusableView(with: ReusableViewType.self, viewHolder: self)
- 在需要预加载的场景中调用:reusableView.fw.preloadReusableView() 预加载下一个视图
- 在需要回收到缓存池时(一般控制器deinit)调用:ReusableViewPool.shared.enqueueReusableView(reusableView)
-
单例模式对象,子类可直接调用
Declaration
Swift
public class var shared: `Self` { get }
-
最大缓存数量,默认5个
Declaration
Swift
open var maxReuseCount: Int
-
最大预加载数量,默认1个
Declaration
Swift
open var maxPreloadCount: Int
-
最大重用次数,默认为最大无限制
Declaration
Swift
open var maxReuseTimes: Int
-
初始化方法,内存警告时自动清理全部
Declaration
Swift
override public required init()
-
获得一个指定类和唯一标志的可复用视图
Declaration
Swift
@MainActor open func dequeueReusableView<T>(with reusableViewType: T.Type, viewHolder: NSObject?, reuseIdentifier: String = "") -> T where T : UIView
Parameters
reusableViewType
可重用视图类型
viewHolder
视图的持有者,一般为所在控制器,持有者释放时会自动回收
reuseIdentifier
重用附加唯一标志,默认空
Return Value
可复用的视图
-
预加载一个指定类和唯一标志的可重用视图并将它放入到回收池中,最多不超过maxPreloadCount
Declaration
Swift
@MainActor open func preloadReusableView<T>(with reusableViewType: T.Type, reuseIdentifier: String = "") where T : UIView
-
回收可复用的视图
Declaration
Swift
@MainActor open func recycleReusableView(_ reusableView: UIView?)
-
销毁指定的复用视图,并且从回收池里删除
Declaration
Swift
@MainActor open func clearReusableView(_ reusableView: UIView?)
-
销毁在回收池中特定类和唯一标志的视图
Declaration
Swift
open func clearReusableViews<T>(with reusableViewType: T.Type, reuseIdentifier: String = "") where T : UIView
-
销毁全部在回收池中的视图
Declaration
Swift
@MainActor @objc open func clearAllReusableViews()
-
重新刷新在回收池中的视图(触发willEnterPool)
Declaration
Swift
@MainActor open func reloadAllReusableViews()
-
判断回收池中是否包含特定类和唯一标志的视图
Declaration
Swift
open func containsReusableView<T>(with reusableViewType: T.Type, reuseIdentifier: String = "") -> Bool where T : UIView