Optimizaciones generales que te hacen más rápido:
- Use Core Animation para su máximo beneficio. Esta es un área de la API de iOS que a veces los desarrolladores pueden entender mal.
- Elementos de la interfaz de usuario de caché de forma inteligente. El indicador shouldRasterize en los objetos CALayer es una herramienta poderosa que elimina mucho dolor del almacenamiento en caché. Aprendelo, ámalo.
- Comprender los comportamientos antes del almacenamiento en caché. Por ejemplo, el indicador shouldRasterize puede causar un impacto * negativo * en el rendimiento si se usa en vistas invalidadas con frecuencia.
- El dibujo más rápido que puede hacer es una larga serie de llamadas de Core Graphics. Si se encuentra en un entorno extremadamente intensivo en rendimiento (las vistas de tabla pueden serlo), un conjunto de llamadas completamente plano en drawRect puede ser muchas veces más rápido que la implementación intuitiva de muchas subvistas y mucho trabajo de composición en el momento del renderizado.
- Aprenda de la implementación UITableView y recicle objetos frecuentemente invalidados / creados. Cada alloc y dealloc es un rendimiento negativo, por lo que si va a hacer mucho, intente encontrar formas de reducir esta carga.
- Mantenga el trabajo intensivo de la CPU fuera del hilo principal para minimizar su impacto en la capacidad de respuesta de la interfaz de usuario. dispatch_async es tu amigo, al igual que el resto de Grand Central Dispatch API.
- No marque las vistas como opacas = NO a menos que realmente no sean opacas. Las vistas transparentes conllevan una penalización de rendimiento muy pronunciada.
- Limite la cantidad de trabajo que realiza en layoutSubviews: manténgalo en el diseño. Muchas aplicaciones violan esto rutinariamente y ponen “trabajo real” en este método. En muchos lugares, layoutSubviews se puede llamar muchas veces seguidas. Evalúe si necesita o no hacer todo el trabajo allí, o si se puede trasladar a un lugar al que nadie y todos puedan llamar everyone
Cosas que no te hacen más rápido, pero que te gustan
- Lazy-load liberalmente. Minimizar el tiempo entre una acción del usuario y una respuesta hace que su aplicación se sienta mucho más rápido. ¿Tiene una imagen en la vista que necesita cargar de forma remota? Muestre primero la vista y permita que el usuario interactúe con ella. Cargue la imagen en el fondo y sustitúyala una vez hecho.
- Haga que toda la carga diferida sea evidente para el usuario. Evite las transiciones feas que rompen el contexto, como los elementos grandes de la interfaz de usuario que aparecen de repente. Usa animaciones generosamente, iOS es bueno en eso. En lugar de un elemento de interfaz de usuario sorpresa desagradable y desagradable, tienes una transición visceralmente satisfactoria que alivia el tiempo de espera.
- Carga preventiva. Esto es especialmente importante para cualquier tipo de “transmisión infinita” (como sus feeds de Twitter o Facebook): no espere a que el usuario toque el fondo antes de cargar más. Observe el comportamiento del usuario: ¿están avanzando lentamente en la lista o están volando? Sintonice la agresión en su cargador predictivo en respuesta.
- Dar una respuesta al usuario lo antes posible después de una interacción. Esto puede implicar lanzar grandes cargas pesadas a otro hilo, pero el retraso visible entre la acción y la respuesta hace que una aplicación se sienta positivamente horrible. Incluso si es solo un indicador de carga, es mejor que quedarse sentado sin hacer nada.
- Asegúrese de que todos los elementos de la interfaz de usuario que responden a los toques * en realidad * respondan a los toques de manera visible. Nada es más frustrante que un elemento de la interfaz de usuario que se niega a mostrar que se ha interactuado con él.
- Datos de caché para limitar las recargas. Considere centralizar su almacén de datos si tiene sentido. Por ejemplo, si una vista obtiene nuevos mensajes para un usuario y los muestra, almacénelos centralmente para que otras vistas relacionadas con la mensajería no tengan que emitir más solicitudes y puedan volverse interactivas de inmediato.
- Las operaciones de red en segundo plano, minimizan el uso de la interfaz de usuario modal, en lugar de un indicador giratorio “funcionando …” que impide que el usuario haga cosas con la aplicación mientras espera, presente un indicador claro pero no impida que el usuario continúe. Esto es complejo y requerirá que encuentre una buena manera de manejar las solicitudes de red fallidas mucho después de que el usuario se haya alejado de la pantalla con la que se relaciona, pero vale la pena el esfuerzo.
- Limite la profundidad de la IU. Una aplicación que esté perfectamente optimizada y siga * todas * las sugerencias anteriores aún se sentiría lenta si toma muchos golpes y transiciones para llegar de un lugar deseado al siguiente. Evite las pilas de controladores de navegación profunda, tardan una eternidad en salir, o al menos ofrecen una forma obvia de llegar a la cima de la pila. Cree IU más amplias y menos profundas en lugar de UI más estrechas y profundas.
- ¿Cuál es la compañía que puede desarrollar la aplicación de iPhone similar a Foodspotting para mí?
- ¿Por qué las aplicaciones se bloquean con tanta frecuencia en Android y con poca frecuencia en Apple?
- ¿Cuál es la mejor manera de obtener usuarios y ganar tracción en mi nueva aplicación de redes sociales, Toboggan?
- ¿Cuáles son las mejores aplicaciones gratuitas que son esenciales en un iPhone?
- ¿Cuál es la mejor plataforma de desarrollo de aplicaciones para iPhone?