2011-06-26 29 views
6

¿Cuáles son las mejores prácticas cuando se trata de UITableViews para mejorar el rendimiento, acelerar el desarrollo y el mantenimiento cuando se trata de UITableViews?UITableView Mejores prácticas

+0

posible duplicado de [¿Cómo puedo acelerar un UITableView?] (Http://stackoverflow.com/questions/6172158/how-can-i-speed-up-a-uitableview) – Caleb

Respuesta

5

Esta no es la primera vez que se formula esta pregunta en SO. Aquí está mi respuesta anterior sobre la materia:

  • altura de la fila dinámica es caro, porque no se puede almacenar en caché los puntos de vista prestados de manera eficiente, ya que el tiempo de ejecución no sabe qué altura se va a volver para una célula dada hasta que se hace la llamada. No lo use si es posible. Los ingenieros de Apple me dijeron que es más eficiente dibujar todas las celdas un poco más altas de lo necesario para dar cuenta de algunas filas más grandes, que usar altura dinámica.
  • Solo obtenga el elemento de la matriz una vez [items objectAtIndex:indexPath.row] en el método -tableView:cellForRowAtIndexPath:
  • Use una caché para cualquier imagen u otros recursos de red. Pruebe el EGOImageView stack, almacena en caché su imagen de manera eficiente, y es un código bastante elegante.
  • Mientras estás en el código EGO github, captar su EGOCache y lo utilizan para almacenar en caché cualquier otro objeto que necesita para manipular, tales como cadenas que se analizan y modificar
  • Si alguno de sus puntos de vista sobre esa celda son transparentes , mira el video de WWDC 2011 sobre el rendimiento de UIKit. Tienen un mucho método más eficiente para dibujar transparencia en las celdas de vista de tabla
  • Si está utilizando Datos principales, use NSFetchedResultsController en su vista de tabla. Maneja fallas de carga, índices de almacenamiento en caché y otras eficiencias específicas de los ivews de mesa.

También mire el video WWDC sobre el uso de instrumentos, revisan cómo encontrar dónde el código de dibujo está matando el rendimiento. Este año tuvo algunas (algunas, no todas) realmente grandes sesiones.

1

Optimizar último, tan subclase UITableViewCell si necesita celdas personalizadas, y si algún día desea mejorar el rendimiento de la representación, es posible que desee representar el contenido utilizando drawRect: en su lugar.

+0

Gracias, pero no es mucho Que escribiste. – atiq

+1

Bueno, no hay mucho más que decir a menos que tenga algo más específico; aparte de eso, creo que hacer cosas como las que escriben en la documentación oficial es probablemente la mejor práctica. –