Tengo una UITableView. cada fila es un objeto pesado con videos, imágenes, etc. Cuando el usuario se desplaza por esta vista, ¿cómo puedo liberar la memoria de las filas no visibles y cargar las filas visibles actuales?Las celdas de UITableView se lanzan cuando no están visibles
Respuesta
Supongo que está hablando de liberar memoria que utilizan las imágenes y videos de su fila, y no la fila en sí.
En su delegado tableview,
-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
te dice cuando el desplazamiento tableview se ha detenido.
[myTableView indexPathsForVisibleRows]
le ofrece una matriz de lo que es visible.
Si su fila no está en esta matriz, no está visible, y puede hacer su limpieza de imagen/video en ella.
¿Está reciclando UITableViewCells según las recomendaciones de Apple? Si no, DEBE leer los documentos de Apple. Dentro de cellForRowAtIndexPath: delegate debe tener algo [customCell setMediaObjects:]. Dentro de su clase customCell puede liberar todos los objetos mediaObjects anteriores de la memoria.
A Closer Look at Table-View Cells - Apple Documentation
Cuando se llama a dequeueReusableCellWithIdentifier primera 10 (sólo diez células se pueden mostrar en la pantalla en un momento dado) se crearán las células, entonces se acaba de cargar y configurados para mostrar. Por lo tanto, las células no se liberan.
Como han dicho otros, debe asegurarse de reciclar las celdas correctamente y no destruir las cosas que necesitaría recrear de todos modos cuando la celda se reutiliza.
Pero, es posible que desee liberar otros activos que conservan la celda o sus vistas. O si esa celda tiene alguna solicitud de descarga pendiente, por ejemplo, es posible que desee restablecer su prioridad o incluso cancelarla cuando la celda esté fuera de la pantalla.
creo que la forma más limpia de hacer esto es simplemente anular -[UITableViewCell prepareForReuse]
Esto se llama cuando la célula se vuelve a poner en la cola de la reutilización. Si el usuario se mueve hacia arriba y hacia abajo de la tabla rápidamente, es posible que no desee limpiar la celda en el momento en que la celda está fuera de la pantalla (mirando indexPathsForVisibleRows, por ejemplo).
Pero cuando la celda se vuelve a poner en la cola de reutilización, es un buen momento para hacer ese trabajo, ya que sabe que la celda no volverá a aparecer en la pantalla hasta que la guarde de nuevo y la vuelva a configurar.
- 1. No se pueden definir las celdas de prototipo en UITableView
- 2. UITableView con celdas estáticas no aparece
- 3. ¿Por qué no se están actualizando las celdas de DataGridView?
- 4. Rendimiento cuando no se lanzan excepciones (C++)
- 5. ¿Hay una manera fácil de observar las celdas visibles en una UITableView?
- 6. ¿Cómo obtener las secciones visibles de UITableView?
- 7. Precargar celdas de uitableview
- 8. tableView: cellForRowAtIndexPath: recibe una llamada no solo para las celdas visibles?
- 9. Mis aplicaciones no están visibles cuando utilizo AdminSite personalizado
- 10. Espacio entre las celdas de UITableView
- 11. Forzar UITableView para llamar a cellForRowAtIndexPath: para todas las celdas
- 12. Ocultar celdas vacías en UITableView
- 13. UITableView insertSections: withRowAnimation: haciendo que se soliciten todas las celdas de tabla
- 14. Cargue todas las celdas en UITableView antes de desplazarse
- 15. reloadData solo en tableView celdas visibles
- 16. UITableView celdas de carga inversa
- 17. Cómo eliminar la separación entre las celdas UITableView
- 18. ¿Cómo mostrar el indicador de divulgación mientras las celdas están en modo de edición?
- 19. Agregar celdas mediante programación a UITableView
- 20. Configuración de celdas estáticas en uitableview programáticamente
- 21. ¿Cómo desactivar el modo de edición en UITableView cuando no hay más celdas para eliminar?
- 22. células UITableView no se pueden seleccionar
- 23. prepareForSegue no se llamó cuando se seleccionó la fila UITableView?
- 24. Detección de Tap & Hold en celdas UITableView
- 25. ¿es posible obtener una devolución de llamada cuando se realiza una recarga de UITableView?
- 26. ¿Se pueden hacer animaciones personalizadas para las inserciones de celdas UITableView?
- 27. Cambiar el color del borde en las celdas UITableView de iPhone (no agrupadas)
- 28. UITableView Problemas de dibujo cuando ReloadData se llama
- 29. Desplazar UITableView solo cuando el contenido no se ajusta a
- 30. Campos protegidos no visibles para las subclases
utilice células reutilizables y olvídese del manejo de la memoria (déjelo en el sistema) – samfisher