He estado desarrollando aplicaciones iOS desde mediados de 2014, y estoy desarrollando aplicaciones iOS y Android como una profesión de tiempo completo desde hace un año y medio.
La dificultad, es relativa, algo que puedo hacer sin esfuerzo puede no ser posible para otro desarrollador, y viceversa.
Diseño automático
Como muchos sugirieron, el diseño automático es un desafío para muchos desarrolladores. Personalmente, me encantan los diseños automáticos, ya sea a través del guión gráfico o por código. Estoy un poco orgulloso de que me encanta el autolayout y puedo hacer cosas exactamente como quiero.
Almacenamiento en caché de imágenes
Algo que debe haber perseguido a casi todos los desarrolladores de iOS en algún momento cuando implementan un UITableView o un UICollectionView, que tiene que mostrar imágenes de un servidor, en su celda correspondiente. ¿Por qué es esto un problema?
Bueno, las celdas se reciclan cada vez que la celda entra y sale de la pantalla. Obtener una imagen de un servidor es una tarea que debe realizar en el subproceso de fondo de forma asincrónica, mientras que la actualización de la imagen en la interfaz de usuario debe realizarse en el subproceso principal. ¿Suena bien?
Bueno, cuando el usuario se desplaza por las imágenes, se disparan solicitudes bastante rápidas para la imagen, pero la respuesta del servidor tarda un poco en llegar al dispositivo. Entonces, lo que sucede es que a veces obtienes la imagen incorrecta en la celda.
No es una tarea imposible de recorrer. Es simple una vez que comprende cómo funciona el almacenamiento en caché y cómo se deben manejar las solicitudes. Pero esto es algo que casi todos habían enfrentado en algún momento.
SpriteKit y Metal
Los objetos animados en 3D no son algo que deba implementar en cada una de sus aplicaciones. Es posible que aún no tenga que lidiar con una API de bajo nivel como Metal y trabajar más cerca de la GPU para implementar simulaciones 3D para sus aplicaciones.
(SpriteKit es un juego de niños comparado con Metal)
Dime, cuántos desarrolladores de iOS conoces pueden implementar esto:
Imagen de Wikipedia
No muchos de ellos, supongo. Si las personas tienen problemas con AutoLayout, ni siquiera consideren la API de Metal. Eso será como la ciencia espacial.
Compatibilidad de código
Swift se actualiza cada año. Su aplicación C objetiva está desactualizada, al igual que sus aplicaciones Swift 1 y Swift 2. La conversión de Swift 1 a Swift 3 no es tan fácil como parece, XCode no lo hace por usted. La mayoría de las veces, tendrá que volver a escribir el código nuevamente para este propósito. Ahora que Apple ha anunciado que las nuevas incorporaciones a Swift a través de la comunidad de código abierto no deben ser destructivas (es decir, no deberían inutilizar el código Swift 3 y posterior) es un alivio.
Sin embargo, aún existen problemas que algunos de los métodos o propiedades que usa ahora pueden quedar obsoletos más adelante. Sin embargo, no lo llamaría algo malo. Tendrá que actualizar su código regularmente. Aunque su aplicación aún puede funcionar, no es agradable ver 14 advertencias en su código completado.
Mismo diseño para Android e iOS
Esto sucede cuando su superior o el cliente realmente no entienden cuán diferente es el diseño de la interfaz humana para Android e iOS y esperan que implemente el mismo diseño tanto para iOS como para Android.
Android tiene una guía de diseño de materiales bien definida que puede seguir para crear impresionantes aplicaciones listas para el diseño de materiales. Es divertido y se adapta bien a las aplicaciones de Android.
Para iOS, es un poco diferente. La directriz de la interfaz humana (como la llaman) no está tan bien definida como Android. Esto le permite utilizar los componentes ricos de UIKit junto con Core Graphics para crear UI / UX muy animados e interesantes. No me gustaría implementar un NavigationController o un botón de acción flotante en mi aplicación iOS. Las cosas deben permanecer si pertenecen, por favor no le pida al desarrollador que haga su aplicación de iOS exactamente como la de Android, o viceversa.
Hay más, por supuesto. Pero estas son las cosas en las que puedo pensar por ahora.