iOS 如何实现View的复用(以访问相册为例)

本文介绍如何在iOS中实现ScrollView中View的复用,通过建立复用池和可视池,遵循创建新View和回收不可见View的原则,避免内存问题。以访问相册为例,详细阐述了复用架构的搭建过程,包括监听用户滚动、更新视图等关键步骤。
摘要由CSDN通过智能技术生成

原创Blog,转载请注明出处
http://blog.csdn.net/hello_hwc?viewmode=list
欢迎关注我的iOS SDK详解专栏
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html


前言:Tableview可以加载很多数据,但是却不会引起内存问题,因为在加载Cell的时候,我们使用了这个方法 dequeueReusableCell......,这个方法就是使用了Cell的复用。同理,如果我们要实现自己的View加载很多东西的时候,View复用也是十分必要的,例如用ScrollView加载很多东西,如果不断的创建新的View,毫无疑问最后内存会不够用。


如何实现View复用?

我自己有三条规则

  1. 建立两个NSSet,一个代表复用池,一个代表可视池。
  2. 每当需要新的View时候,先检查复用池里有没有,如果有,则取出,没有则创建新的。
  3. 监听用户可视范围,需要新的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值