原创Blog,转载请注明出处
http://blog.youkuaiyun.com/hello_hwc?viewmode=list
欢迎关注我的iOS SDK详解专栏
http://blog.youkuaiyun.com/column/details/huangwenchen-ios-sdk.html
前言:Tableview可以加载很多数据,但是却不会引起内存问题,因为在加载Cell的时候,我们使用了这个方法 dequeueReusableCell......,这个方法就是使用了Cell的复用。同理,如果我们要实现自己的View加载很多东西的时候,View复用也是十分必要的,例如用ScrollView加载很多东西,如果不断的创建新的View,毫无疑问最后内存会不够用。
如何实现View复用?
我自己有三条规则
- 建立两个NSSet,一个代表复用池,一个代表可视池。
- 每当需要新的View时候,先检查复用池里有没有,如果有,则取出,没有则创建新的。
- 监听用户可视范围,需要新的View则按照2中的规则来得到一个新的View,如果一个View不可见了,则放到复用池里
一个简单的例子-访问相册
效果
先实现规则1
为了实现规则1,需要声明两个NSSet,当然我们也需要一个Scrollview和一个数据源
@property (strong,nonatomic)UIScrollView * containScrollView;
@property (strong,nonatomic)NSMutableArray * assetsArray;
@property (strong,nonatomic)NSMutableSet * dequePool;//复用池
@property (strong,nonatomic)NSMutableSet * visiablePool;//可见池
并且对其初始化
-(void)commonInit{
self.dequePool = [[NSMutableSet alloc] init];
self.visi

本文介绍如何在iOS中实现ScrollView中View的复用,通过建立复用池和可视池,遵循创建新View和回收不可见View的原则,避免内存问题。以访问相册为例,详细阐述了复用架构的搭建过程,包括监听用户滚动、更新视图等关键步骤。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



