cell重用的几种方式

1.使用xib重用

//ios6 之后推荐大家使用的重用方式

//动态的使用self获得当前类名,来作为唯一的标示

NSString * identifier = NSStringFromClass([self class]);

UINib * nib = [UINib nibWithNibName:identifier bundle:nil];

//注册

[tableView registerNib:nib forCellReuseIdentifier:identifier];

//先在缓存池中去,如果缓存池没有可重用的cell,那么根据前面注册的nib创建一个cell对象给你返回回来

GPSubjectCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier];

return cell;

2,纯代码

//保证标示的唯一性,使用类名是一种非常好的选择

NSString * identifier = @"GPSubjectCell";

//1.先去缓存池中找是否有可以重用的

GPSubjectCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier];

//2.如果没有可以重用的那么自己创建一个出来

if(cell == nil)

{

cell = [[self alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];

}

return cell;

3.

//使用注册的机制,实现纯代码cell类的重用

NSString * className = NSStringFromClass([self class]);

[tableView registerClass:[self class] forCellReuseIdentifier:className];

return [tableView dequeueReusableCellWithIdentifier:className];

4.使用storyboard 时, (但必须给cell一个Identifier)

return  [collectionView dequeueReusableCellWithReuseIdentifier:@"bookCell" forIndexPath:indexPath];

时间: 2024-10-11 23:05:57

cell重用的几种方式的相关文章

cell展开的几种方式

一.插入新的cell 原理: (1)定义是否展开,和展开的cell的下标 @property (assign, nonatomic) BOOL isExpand; //是否展开 @property (strong, nonatomic) NSIndexPath *selectedIndexPath;//展开的cell的下标 (2)创建两个不同的cell - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtInde

iOS-晋级之路- tableviewCell重用问题两种方法

最近看大神mj的代码,学到了这个方法,cell重用的第二种方法 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; static NSString *CellIdentifier = @"Cell";    if (cell == nil) {        cell = [[UITableViewCell alloc] initWithStyle:UITableVi

使用可重用 cell 的两种方式

1. 最常用的方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];     if ( !cell)     {         cell = [[UITable

Python之面向对象的组合、多态、菱形问题、子类中重用父类的两种方式

一.组合 ''' 1.什么是组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象 2.为何用组合 组合也是用来解决类与类直接代码冗余问题的 3.如何用组合 ''' # 继承减少代码冗余,但是将类与类进行了强耦合,python不崇尚,所以能不用继承就尽量不用继承 class OldboyPeople: school = 'oldboy' def __init__(self, name, age, sex): self.name = name self.age = age se

089 重用父类方法的两种方式

目录 一.直接调用指定类的方法 二.通过super()关键字 2.1 使用方法 2.2 使用super调用父类方法 2.3 super()的调用顺序 重用父类方法有两种方式: 指名道姓的使用,直接调用指定类的方法 super关键字使用 一.直接调用指定类的方法 指名道姓的使用,跟继承没有关系.但也能完成需求 class Person: school = 'xxx' def __init__(self,name,age): self.name=name self.age=age def study

java实现多线程的三种方式

java中实现多线程的方法有两种:继承Thread类和实现runnable接口 1.继承Thread类,重写父类run()方法   public class thread1 extends Thread {           public void run() {                 for (int i = 0; i < 10000; i++) {                         System.out.println("我是线程"+this.get

3种方式实现Java多线程

java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 public class thread1 extends Thread { public void run() { for (int i = 0; i < 10000; i++) { System.out.println("我是线程"+this.getId()); } } public static void main(String[] args) {

JAVA多线程实现的三种方式

JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程. 当中前两种方式线程运行完后都没有返回值,仅仅有最后一种是带返回值的. 1.继承Thread类实现多线程 继承Thread类的方法虽然被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,而且,启动线程的唯一方法就是通过Thread类的start()实例方法.start(

实现多线程的四种方式

Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Callable.Future实现有返回结果的多线程. 其中前两种方式线程执行完后都没有返回值,后两种是带返回值的. 1.继承Thread类创建线程Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例.启动线程的唯一方法就是通过Thread类的start()实例方法.start(