Cuando Apple desarrolló el UITableView
para el primer iPhone, tuvo un problema de rendimiento al desplazarse por él. Entonces, un ingenioso ingeniero descubrió que la causa de esto era que la asignación de objetos tenía un precio, por lo que se le ocurrió una forma de reutilizar las células.UITableView dequeueReusableCellWithIdentifier Theory
"asignación de objeto tiene un costo de rendimiento, especialmente si la asignación tiene que ocurrir repetidamente en un corto período de, digamos, cuando los rollos usuario una vista de tabla. Si se reutilizan las células en lugar de asignar nuevos, usted mejorar en gran medida el rendimiento de la vista de tabla ".
Fuente: Biblioteca de Referencia iOS
volver a utilizar un celular que utilice:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Ahora, lo que me pregunto es, lo que realmente sucede aquí? ¿Se ve en TableView si hay una celda con ese identificador y simplemente devuelve ese? Bueno, sí, pero si envía una referencia en lugar de asignar y tengo una vista de tabla con, digamos, 4 celdas con el mismo identificador, todo visible. ¿Cómo puede multiplicarse en cuatro instancias sin asignar?
Quiero saber esto porque estoy creando un componente de tipo calendario y todas las celdas tienen la misma estructura que el texto dentro de los cambios. Entonces, si pudiera volver a usar mis celdas de alguna manera en lugar de asignar, creo que podría obtener un mejor rendimiento.
Mi propia teoría es que asigna las cuatro celdas (simplemente porque también tiene). Cuando una celda desaparece de la pantalla, se colocará en la cola de reutilización TableView. Cuando se necesita una nueva celda, busca en el que si está disponible una celda con el mismo identificador, invoca el método prepareForReuse
en esa celda y se elimina de la cola.
Respuesta corta: Sí. Tiene una cola/conjunto de reutilización diferente que no es lo mismo que las cosas que ya están en la tabla. –