美文网首页iOS Developer
UITableView重用的理解

UITableView重用的理解

作者: YourFoot | 来源:发表于2017-03-03 11:39 被阅读0次

    由于内存有限,我们就需要重用UITableViewCell对象

    UITableView.png

    当用户滚动窗口,图中第一个UITableViewCell1对象移除窗口,UITableView对象会将移除窗口的UITableViewCell对象放入UITableViewCell对象池,等待重用.当UITableView对象要求数据源返回某个UITableViewCell对象时,数据源先查看对象池子,如果有没有使用的对象,就给这个对象配置数据,并且返回给UITableView(cell8后面没有了,就显示Cell1)

    问题:
    有时候会自定义Cell,所以UITableView可能拥有不同类型了的UITableViewCell,那么UITableView可能从对象池中得到错误类型的UITableViewCell对象

    你要知道返回的对象拥有哪些属性和方法,就要确保UITableView获得指定类型的UITableViewCell对象
      假设你UITableViewCell的子类叫做UITableChildCell
    在cellForRowAtIndexPath那个方法中创建或重用UITableViewCell对象:
    <pre> <code> UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableChildViewCell" forIndexPath:indexPath];</code></pre>

    为了重用UITableViewCell对象,要将创建的过程交给系统管理,告诉表试图,如果对象池中没有UITableViewCell对象,应该初始化哪种类型的Cell对象.所以在ViewDidLoad中调用:
    <pre><code> [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewChildCell"</code></pre>

    刚开始对象池中没有东西,就会初始化UITableViewChildCell对象,等屏幕满了,就不会创建,直接在对象池里调用之前推出的未使用对象

    方法中的ReuseIdentifier属性:
      每个UITableViewCell对象都有一个NSString类型的reuseIdentifier属性,按照约定,我们将UITableViewCell或他的子类的类名,用reuseIdentifier命名.就像UITableViewChildCell
      当数据源向UITableView对象获取可重用的UITableViewCell对象时,传入一个字符串,而UITableViewCell的reuseIdentifier属性要等于这个字符串,这样就保证了UITableView获得指定类型的UITableViewCell对象.

    相关文章

      网友评论

        本文标题:UITableView重用的理解

        本文链接:https://www.haomeiwen.com/subject/dhulgttx.html