Alguna experiencia en programación.
La experiencia en programación mencionada aquí es ser competente en al menos un lenguaje de programación, tener cierta comprensión de la programación orientada a objetos y, preferiblemente, estar familiarizado con algunos patrones de diseño básicos. La mayoría de los desarrolladores de iOS que encontré fueron transferidos de otros lenguajes, por lo que si tienes cierta base de programación, será más fácil comprender los puntos clave al aprender.
Si es la primera vez que entras en contacto con la programación, por supuesto que no hay problema. Solo prepárate mentalmente. Puede que sea más difícil de lo que crees.
Inglés
Descubrí que muchos desarrolladores parecen ser un poco intolerantes con el inglés y el chino suele ser la primera opción. A menos que sea absolutamente necesario, debe leer StackOverflow, artículos y documentos en inglés, etc. Olvidé quién dijo "cuanto más difícil sea el camino, mejor". Generalmente es así. De hecho, siempre que te esfuerces un poco, esos artículos técnicos no deberían ser un gran problema. Después de algunas experiencias exitosas, este miedo disminuirá mucho. Los artículos, vídeos y libros de alta calidad están principalmente en inglés. Si no supera este obstáculo, se convertirá en un cuello de botella en el futuro o gastará más dinero para superarlo.
Curso para principiantes
Libro
Para aprender a desarrollar iOS, naturalmente debes aprender Objective-C primero (por supuesto, ahora también puedes ir directamente a Swift, pero si quieres colaborar con varias personas, OC sigue siendo la corriente principal), porque OC es un superconjunto del lenguaje C, por lo que conocer el lenguaje C definitivamente te ayudará a aprender OC, pero incluso si no lo entiendes, aprender OC directamente no es un gran problema.
Aquí recomendamos "La guía de programación Objective-C de Big Nerd Ranch" de BNR (Big Nerd Ranch). Explica con gran detalle y puede ayudarle a comprender mejor OC y, lo que es más importante, enseñarle. cómo encontrar problemas, cómo resolver el problema, así como algunos puntos de conocimiento correspondientes a este problema, cómo usar documentos, etc.
Cuando llegues a un mundo nuevo, estarás lleno de curiosidad acerca de este mundo. Querrás suscribirte a muchos blogs, comprar muchos libros y ver varios tutoriales y videos. Entonces te volverás impetuoso. . Saber por dónde empezar conduce a la procrastinación. Tengo sed. Sírveme un vaso de agua. Esto es muy sencillo y puedo hacerlo de inmediato. Pero si compro una bebida y no estoy familiarizado con ella, tendré dificultades. ¿Qué tal si reviso Weibo primero, miro Momentos y juego un pequeño juego?
Por lo tanto, un buen libro de texto introductorio es muy importante. Debe estar en línea con tu nivel actual y, a menudo, obtendrás algo. Esta sensación de logro lo alentará a continuar aprendiendo.
En el proceso de lectura de un libro, a menudo tienes esa experiencia: una persona, un punto de vista, un punto de conocimiento, un libro, un artículo se mencionan en el libro, y luego sigues estas cosas mencionadas. salir. Tal vez un punto de conocimiento toque otra cosa y luego vayan más y más lejos. Me acuerdo de una historia:
Tres perros persiguieron a una marmota y la marmota escapó al agujero de un árbol. Sólo hay una salida desde este agujero de árbol. Pronto, un conejo salió corriendo del agujero del árbol. El conejo corrió rápidamente y trepó a otro árbol grande. Presa del pánico, el conejo perdió equilibrio en el árbol y cayó, asustando a tres perros que miraron hacia arriba. Finalmente, el conejo finalmente escapó.
Esta historia se puede interpretar desde diferentes ángulos, pero yo prefiero interpretarla con el corazón. ¿Por qué los conejos trepan a los árboles? ¿Por qué puedes noquear a tres perros? Éste no es el punto. La cuestión es, ¿dónde está la marmota que antes perseguíamos? Al leer un libro, es inevitable que haya una lectura prolongada. Creo que la profundidad no debe exceder los 2 pisos, de lo contrario será fácil regresar.
Además, si es posible, lo mejor es verlo todos los días. De hecho, es difícil, porque siempre habrá cosas con mayores prioridades o algunos hábitos previos que interfieren. Una vez que se rompa durante unos días, no querrás volver a recogerlo.
Además, Apple comenzó oficialmente hoy a desarrollar aplicaciones para iOS, lo que también es un muy buen material introductorio.
Video
Recomiendo la aplicación iOS 7 para iPhone y iPad de Paul Hegarty, quien vio esta originalmente (era una versión anterior en ese momento). Paul es un desarrollador senior de Mac/iOS (¿ex empleado de Apple?). Hay muchos puntos de conocimiento. La mayoría de las preguntas de los estudiantes son muy pertinentes.
En resumen, después de escucharlo, tendrá una comprensión integral del desarrollo de iOS.
También recomiendo un folleto: objc-zen-book, que se puede leer en poco tiempo. Contiene algunas de las mejores prácticas, que serán de gran ayuda para escribir código de alta calidad.
Notas
Este es un proceso duradero que se puede aplicar en cualquier etapa. No le presté mucha atención a esto antes. Pensé que entendería las cosas conceptuales una vez que pensara en ellas y luego pasaría a otras cosas. Ahora parece que si tomo notas, será más útil para digerir conceptos y puntos de conocimiento, y también puedo registrar mi proceso de pensamiento. Leonardo da Vinci registró más de 10.000 páginas de notas.
Tomar notas puede profundizar tu comprensión de los puntos de conocimiento, y el único secreto para convertirte en una superestrella de la programación es que cuanto más comprendas lo que estás haciendo, mejor lo harás. Al mismo tiempo, si repasas según la curva de olvido, el efecto será mejor. Una vez que tenga una comprensión profunda del conocimiento, será más fácil saber dónde radica el problema durante la depuración y será más fácil tener ideas para resolver el problema.
Las notas no solo pueden registrar puntos de conocimiento, sino también registrar el proceso de depuración. Por ejemplo, hay un método de depuración en esta nota: el método de depuración del patito amarillo.
Muchos programadores han consultado y explicado problemas de programación a otros (incluso a personas que no saben programar en absoluto) y, en el proceso de explicación, han encontrado soluciones a los problemas. Mientras explica la intención del código, observe su intención real y depurelo. Cualquier disonancia entre ambos se hace evidente y es más fácil detectar los errores.
Es posible que en realidad no hagamos esto en nuestras vidas. En este momento, sacar al otro yo y grabar la conversación con él también es una buena forma de encontrar el problema.
Práctica
Este también es un proceso continuo. Después de conocer algunos conceptos o principios, siempre quiero verificar si este es el caso. Independientemente de si los resultados son los esperados, el proceso de práctica reducirá la falta de familiaridad con el idioma y desarrollará gradualmente la confianza en dominarlo. Si algo sale mal, puedo arreglarlo nuevamente.
Objetivo
Si te calmas y lees el libro de BNR y el video de desarrollo de iOS de Stanford, deberías tener una mejor comprensión de OC, y algunos UIKit de uso común no serán un problema para usar. como controlador UIView/vista ui/vista de desplazamiento ui/vista de imagen ui/UITableView. También estoy familiarizado con algunos conceptos como KVO/MVC/Delegate/DataSource.
En esta etapa debería haber: Oh, así es como funciona el desarrollo de iOS. Lee más documentación, familiarízate con algunas clases de Cocoa Touch y casi podrás hacer una aplicación sencilla.
Avanzado
Después de comenzar, habrá muchas cosas con las que lidiar.
Libro
Objetivo efectivo - C 2.0, que menciona 52 formas de mejorar la calidad de las aplicaciones de iOS. Implica diseño de API, uso de protocolos/clases, escritura de código más modular, etc. Deberías ganar mucho después de leerlo.
Programación IOS: La guía del gran nerd para la ganadería (cuarta edición) es otro libro de BNR. Se caracteriza por presentar puntos de conocimiento a través de demostraciones y luego hacer algunas preguntas y explicar en detalle ideas para resolver problemas. En el proceso de lectura, también ayudará a mejorar la capacidad de metaaprendizaje.
-Actualización-
Descubrí que el desarrollo avanzado de iOS del hermano Qiao ya está disponible en JD.COM. Aunque no miré con atención, la calidad de los productos de Qiao Ge definitivamente está garantizada.
Otros recursos
Después de entrar en esta etapa, podremos explorar un mundo más grande. Hoy en día los recursos abundan, pero aún debemos seguir el principio de “menos pero mejor”. Los siguientes son recursos que creo que son buenos.
IOS Dev Weekly se publica una vez a la semana y el contenido consiste principalmente en proyectos, artículos, herramientas, etc. de Github. Preguntas para observar esta semana.
IOS Mobile Development Weekly Este es un buen contenido semanal sobre el desarrollo de IOS, organizado por Tang Qiao, la mayoría del cual está en chino.
RayWenderlich tiene muchos tutoriales detallados y completos que no debe perderse.
IOS Dev Slack Muchos desarrolladores nacionales de IOS (incluidos adultos) han venido, pero ahora parece que no pueden recibir invitaciones.
Lista de blogs chinos de desarrollo de iOS/Mac, abra la suscripción a la herramienta.
Además, si es posible, comparte lo aprendido. Enseñar es la mejor manera de aprender. Lo he probado varias veces y funciona muy bien.
Objetivos
En esta etapa, debe estar familiarizado con los patrones de diseño comunes, la administración de memoria, el uso de bloques, las operaciones de imágenes, las solicitudes y administración de red y el subproceso múltiple. Estoy muy familiarizado con los contenedores CALayer, Animation, UIScrollView, UITableView, UICollectionView y ViewController. La definición de "muy familiar" es: el 80% de los puntos de conocimiento correspondientes se pueden repetir en la mente sin abrir Xcode. Por ejemplo, ¿cuáles son los métodos de esta clase? ¿Cuáles son los métodos de Delegate/DataSource, cómo usarlos y qué hacer si desea lograr un efecto (bueno, excepto UICollectionView)?
Más antiguo
De hecho, no existen límites estrictos entre avanzado, avanzado y básico. Algunas cosas del nivel avanzado también se pueden explorar en el nivel básico. Creo que la fuerza impulsora detrás de nuestra continua exploración y progreso no es el interés, sino la curiosidad insaciable y la búsqueda de un código elegante.
Si sus estándares son bajos, se detendrá temprano en el proceso.
La actualización de BNR es muy bonita y más detallada.
Libro
El libro "La programación de IOS 7 desafía los límites" explicará en profundidad algunas características de iOS 7, por supuesto, no solo de iOS 7. Simplemente lamento que iOS se actualice tan rápido que los libros a menudo no pueden seguir el ritmo. A menudo se necesita mucho tiempo para escribir un buen libro y, cuando esté listo para su publicación, habrá salido una nueva versión de iOS.
Código fuente
Puede aprender mucho mirando un código fuente excelente y es más fácil resolver los problemas encontrados durante el uso. Estos son los códigos fuente que creo que vale la pena examinar más de cerca: redes AF (operación ns, http, bloque), SDWebImage (identificador de imagen, caché, operación ns, bloque), SVPultoRefresh (uiscrollview, identificador de estado), modelo JSON (tiempo de ejecución). ).
Si está interesado, también puede explorar el código fuente del tiempo de ejecución de CoreFoundation/OC.
Recursos
oleb
NSHipster
objc io | p>
p>
Herramientas
El asistente LLDB producido por chisel Facebook es muy conveniente para depurar.
Reveal lo abrirá cada vez que tenga curiosidad sobre la implementación de una aplicación, lo que también es conveniente para depurar su propia aplicación.
Aspectsteipete es una herramienta de cambio de método fácil de usar que puede agregar código dinámicamente a los métodos en tiempo de ejecución.
Class-dump genera archivos de encabezado OC a partir de archivos Mach-O, a veces es conveniente ver cómo está organizada una App.
¡Hopper puede descompilar archivos binarios e incluso generar pseudocódigo! A veces, esto se puede utilizar si desea comprender cómo se podría implementar un determinado método en un UIViewController.
Instruments es una herramienta integrada que resulta muy útil para descubrir diversos problemas en la aplicación, como uso de memoria, fugas, problemas de renderizado, etc.
Objetivos
En esta etapa, tendremos una comprensión más profunda de la implementación subyacente. Los marcos al comienzo de varios núcleos pueden al menos dar una idea aproximada y las herramientas también se pueden utilizar con soltura. Después de escribir decenas de miles de líneas de "código serio", es posible que Dash se entregue todos los días. Si alguien le pide que implemente una función, puede brindarle un buen plan de implementación en poco tiempo y que sea lo suficientemente detallado, incluso lo suficientemente detallado como para dibujar una imagen con gráficos centrales.
Otros
Creo que no importa lo que aprendas, la mentalidad de "éxito rápido" es la más indeseable. Sólo te volverá impetuoso y medio informado, y será difícil. para mejorar tus habilidades en todo el proceso. Tómate tu tiempo, captura una ciudad y luego otra. En este momento, tu mentalidad estará mucho más tranquila.