Resumen en ruso con adaptación a iOS 17 / Sudo Null IT News

Si desea obtener conocimientos fundamentales sobre el desarrollo de aplicaciones iOS utilizando SwiftUI, deberías realizar el curso de Stanford CS193P. Conferencias ofrecidas en el semestre de primavera de 2023. Curso Stanford CS193P «Desarrollo de Aplicaciones para iOS con SwiftUI» (“Desarrollo de aplicaciones iOS usando SwiftUI”): esta es la tercera reencarnación del curso CS193P con el marco SwiftUI. En sitio web del curso Encontrará materiales que se proporcionaron a los estudiantes de Stanford durante el semestre de primavera de 2023: enlaces a videos, diapositivas, tareas y código de demostración para iOS 16 y Xcode 14.

Actualmente ejecuta Xcode 15 / iOS 17, que se presentó en la WWDC 2023 después de completar el curso CS193P, la actualización más significativa se realizó en el motor de interfaz de usuario reactivo en SwiftUI (@Macro observable contra protocolo ObservableObject). Sin embargo, ObservableObject presente en Xcode 15/iOS 17 y se puede utilizar junto con la nueva macro @Observable.

EN notas ilustradas en ruso para este curso Se tomaron notas sobre los cambios en iOS 17, y también se completaron algunos fragmentos de Lectures, donde hay sonido, pero la imagen desaparece cuando el profesor demuestra algo “en vivo”. Para la mayoría de las conferencias, se proporciona una versión que utiliza la macro @Observable en lugar del protocolo. ObservableObjecten algunos casos esto requirió soluciones no triviales.

El profesor se adhiere a la forma “narrativa” de enseñar cómo trabajar con un sistema como SwiftUI. Este método consiste en que estudias todos los “personajes” y escenarios. SwiftUI, siguiendo alguna trama en el camino y construyendo un mundo nuevo, agregando gradualmente más y más piezas de código nuevas. Y no se añaden sólo algunos fragmentos de código no relacionados, sino que la apariencia de cualquier línea de código se explica claramente por la trama de la aplicación que se está desarrollando. Como resultado, obtiene una imagen completa del desarrollo de aplicaciones iOS. Así cuenta el profesor la historia del desarrollo de la aplicación en SwiftUI.

Tradicionalmente, este curso presenta el desarrollo de sólo dos aplicaciones. El primero es un juego de cartas de “emparejar” Memorizar para iPhone (Conferencias 1-9), y la segunda es una aplicación arte emoji para crear “pinturas” a partir de emoji (emoticonos) e imágenes de fondo descargadas de Internet para iPad y Mac (Conferencias 10-15).

Un juego Memorizar Tiene una lógica bastante sencilla y una pantalla en la que sucede todo: el juego en sí y la puntuación. No hay navegación, ni gestos complejos, ni ventanas emergentes, ni subprocesos múltiples. Pero está diseñado para mejorar sus habilidades básicas de programación en Swift y diseñar UI reactiva en SwiftUI – Sistema de TIPOS Swiftprotocolos protocol, Genericsextensiones extension, Optionalarquitectura MVVM + MVI@ViewBuilder, Layout, ViewModifierimplícito (implicit) y explícito (explicit) animaciones, transiciones Transition, TimelineView, matchedGeometryEffect.

Segunda aplicación arte emoji – una aplicación más compleja para crear obras de arte en forma de pinturas a partir de emojis e imágenes de fondo seleccionadas de Internet y colocadas mediante un mecanismo Arrastrar y soltar. ya hay dos aqui MVVM: uno es para la pintura en sí, el otro es para el almacenamiento de la paleta, que se puede editar, y el segundo modelo METROEl modelo para paletas se proporciona a su View directamente, pero al mismo tiempo ViewModel permanece, y Paul Hagerty explica por qué. Esta aplicación ya tiene nueva navegación y nuevo uso de subprocesos múltiples. actoruna combinación de gestos Pan y Pinch con @GestureState, además de utilizar el sistema de archivos iOS y UserDefaults para almacenamiento permanente, etc. La versión final de esta aplicación es generalmente una aplicación orientada a documentos.

Aunque la estructura del curso CS193P Primavera 2023 en muchos aspectos similar versión CS193P Primavera 2021el contenido es muy diferente, ya que SwiftUI ha mejorado significativamente durante estos 2 años: se han inventado nuevos “combinantes” View (LazyVGrid, LazyHGrid), lo que me inspiró a crear el mío propio. AspectVGridmayores oportunidades Shapehan aparecido nuevos View modificadores (.onChange) y “Property Wrappers” (@FocusState), nuevos tipos de animación (TimelineView, matchedGeometryEffect), la implementación se ha simplificado significativamente Arrastrar y soltar debido al nuevo protocolo Transferableel concepto de navegación ha cambiado (NavigationStack / SplitView, NavigationLink, .navigationDestination), ha aparecido un concepto completamente nuevo de subprocesos múltiples. El profesor incluso utiliza una versión más moderna de multitarea en el iPad: Director de escena.

Cada tema se trabaja tres veces: primero, el profesor explica el problema en diapositivas, luego lo muestra en una demostración y, finalmente, lo refuerzas completando las tareas, de las cuales hay 6 en el curso.

Además, el curso cuenta con los llamados “Tareas de lectura”, son 3, que, de hecho, son una guía sobre cómo aprender racionalmente un lenguaje de programación. Swift por un corto tiempo.

Lo mejor es escuchar conferencias mientras se programa simultáneamente en Xcode. Esto es exactamente lo que es la tarea número 1, y aquí un resumen ilustrado en ruso puede resultar muy útil, porque no es necesario rebobinar el vídeo de un lado a otro, y todo el material está al alcance de su mano.

A continuación se muestra un resumen de las conferencias del curso. «Desarrollo de aplicaciones para iOS con SwiftUI Spring 2023»

Conferencia 1. Comenzando con SwiftUI.

Introducción al curso. Lo esencial SwiftUI. Estamos empezando a trabajar en nuestra primera aplicación del semestre, un juego de cartas llamado Memorizar. Esto formará la base del material didáctico durante las primeras semanas del curso. Demuestra los conceptos básicos de la composición de elementos de la interfaz de usuario (UI) utilizados en SwiftUIocurre en el entorno de desarrollo Xcode.
Ver en YouTube.
Resumen ilustrado en ruso de la lección 1.
Tarea de lectura 1.

Conferencia 2. Más sobre SwiftUI.

Desarrollo de juegos Memorizar continúa. Creando personalizado View. Procesamiento de gestos táctiles TapGesture. Agregar botones Button. Factorización de código repetido.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 2.
Tarea de programación 1.

Conferencia 3. MVVM.

Una descripción general conceptual del paradigma arquitectónico subyacente al desarrollo de aplicaciones iOS utilizando SwiftUIconocido como MVVM. Explicar un componente fundamental para comprender un lenguaje de programación. Swift: su sistema de TIPOS. Empecemos a usar esto para el juego. Memorizar.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 3.

Tema 4. Aplicación de MVVM.

Aplicando la arquitectura MVVM a la aplicación Memorizar. En el camino, familiaricémonos con los genéricos (Generics) y tener una idea sobre static variables y funciones. Creando una UI reactiva. Sigamos explorando las posibilidades. Xcode.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 4.
Tarea de lectura 2

Conferencia 5. Protocolo de protocolos, enumeraciones enumeradas, opcional.

El tema principal son los protocolos (Identifiable, Equatable etc.). Además, otro elemento importante del sistema TYPE en Swift – transferir enum. Se presta mucha atención al listado más importante. enum V SwiftOptional. Lógica Memorizar termina con el uso de propiedades calculadas.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 5.
Tarea de programación 2.

Conferencia 6. Diseño de pantalla Diseño, @ViewBuilder

Cómo SwiftUI muestra su Views, dado el espacio disponible para ello? ¿Y cómo podemos crear nuestros propios “motores de diseño”? Views? actualización del juego Memorizarpara maximizar la eficiencia de colocar cualquier número de tarjetas en la pantalla sin desplazarse. “Entre bastidores” @ViewBuilderusamos @ViewBuilder para variables calculadas, en inicializadores init para argumentos de función y variables var en estructuras struct.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 6.
Tarea de lectura 3
Tarea de programación 3.
En AspectVGrid.swift.

Conferencia 7. Formas geométricas, modificadores de vista, constantes

Cómo dibujar formas geométricas Shape V SwiftUI (por ejemplo, una forma geométrica en forma de “pastel” Pienecesario para una futura “característica” animada del juego Memorizar). Cómo crear tus propios modificadores ViewModifier (por ejemplo, uno que “mapea” (es decir, se convierte en un mapa) cualquier Viewy no sólo nuestra tarjeta de juego Memorizar). A lo largo del camino, introduzcamos un formalismo para agregar cuidadosamente constantes a nuestro código.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 7.
Código Cardify.swift.
Código Pie.swift.

Conferencia 8. Animación (parte 1)

La primera parte de una aventura animada de dos partes. Implícito (implicit) animación versus explícita (explicit) animaciones. Curvas de animación. Animación modificadora ViewModifier (voltear las cartas).

Ver en YouTube.
Resumen ilustrado en ruso de la lección 8.
Tarea de lectura 4.

Conferencia 9. Animación (parte 2)

Iniciar animación al aparecer. Views (mejora de la cuenta “voladora” puntaje). Animar cambios de estado usando TimelineView (“puntos de bonificación” por “pastel” Pie). Animación View “transiciones” Transition hacia y desde la pantalla y repartir cartas en el juego Memorizar usando un modificador matchedGeometryEffect.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 9.
Tarea de programación 4.
Memorizar código.

Conferencia 10. Arte Emoji

Creando una aplicación para iPad desde cero: arte emoji. Esta es una oportunidad para volver a mirar MVVMporque esta aplicación tiene una arquitectura completamente diferente a la del juego Memorizar. Utiliza SwiftUI Arrastrar y soltar mecanismo para configurar la imagen de fondo del documento arte emoji y agregar emoji (emoticones) a las obras de arte que puedes crear usando esta aplicación.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 10.
Código EmojiArt L10.

Conferencia 11. Gestos, segundo MVVM

Procesamiento de gestos multitáctiles (hacer zoom y mover documentos por la pantalla) arte emoji). Comenzamos a crear aplicaciones más complejas agregando una segunda construcción a la aplicación. MVVM (paletas de emoticonos arte emoji).

Ver en YouTube.
Resumen ilustrado en ruso de la lección 11.
Tarea de programación 5.
Código EmojiArt L11.

Conferencia 12. Persistencia. Envoltorios de propiedad

Garantizar que la información se guarde entre los lanzamientos de la aplicación. arte emoji guarda su documento, así como cualquier cambio realizado en sus paletas. sistema de archivos y Valores predeterminados de usuario. Aprendamos más sobre cómo funcionan los contenedores de propiedades (por ejemplo, @Estado, @Publicado etc.).

Ver en YouTube.
Resumen ilustrado en ruso de la Conferencia 12.
Código EmojiArt L12.

Conferencia 13. Presentación de vistas, navegación.

Hasta ahora, cada una de nuestras dos aplicaciones constaba de un solo “ContentView” principal ( EmojiMemoryGameView juegos Memorizar o EmojiArtDocumentView Para aplicación arte emoji). Las aplicaciones más complejas deberían presentar muchas vistas diferentes. Views. Añadiendo a arte emoji mecanismos para editar sus paletas, presentación de ventanas modales emergentes .popover y .sheetasí como la navegación entre Views.

Ver en YouTube.
Resumen ilustrado en ruso de la lección 13.
Tarea de programación 6.
Código EmojiArt L13.

Conferencia 14. Subprocesos múltiples, manejo de errores

La interfaz de usuario de las aplicaciones móviles siempre debe responder, incluso si tiene que realizar acciones que toman un tiempo (relativamente) largo (como descargar algo de Internet). Idioma Swift tiene un mecanismo incorporado para dejar claro qué acciones deben ocurrir “en segundo plano” para no ralentizar la interfaz de usuario. Manejar errores inesperados también es importante, por eso esta conferencia presenta ambos temas juntos.

Ver en YouTube.
Resumen ilustrado en ruso de la Conferencia 14.
Código EmojiArt L14.

Conferencia 15. Arquitectura orientada a documentos.

arte emojipor supuesto, quiere admitir la presencia de múltiples documentos (como uno al lado del otro en iPady en varias ventanas en Mac). SwiftUI tiene una poderosa interfaz de usuario incorporada para resolver este problema y recibiremos soporte a lo largo del camino. Deshacer/Rehacer V ¡Arte emoji!

Ver en YouTube.
Resumen ilustrado en ruso de la Conferencia 15.
Código EmojiArt L15.


Paul Hagerty explica el concepto clave muy claramente. SwiftUI – la única “fuente de verdad” (Soltero Fuente de la verdad) a través de un sistema de “vinculaciones” inversas Binding de View por ViewModel A Model e implementación ViewModel a la jerarquía Views por @EnvironmentObjeto. Esto le permite editar directamente los datos almacenados en otro lugar desde View cualquier nivel de jerarquía y evitar la duplicación del almacenamiento de datos en diferentes lugares.

Pero todo esto es posible gracias al mecanismo de interfaz de usuario reactivo en SwiftUIque se basa en el protocolo ObservableObject. Verdadero dos veces al desarrollar una aplicación arte emoji Paul Hagerty va más allá ObservableObject: usando Userdefaults como una propiedad calculada с get {} y set {} para guardar paletas palettes te obliga a abandonar el uso explícito de @Published cuando usas una matriz (ObservableObject)que no es automáticamente ObservableObject.

Sin embargo, a partir de iOS 17, iPadOS 17, macOS 14, tvOS 17 y watchOS 10, después de completar el curso CS193P, SwiftUI propone un nuevo marco Observationque implementa el patrón de observador, y la macro @Observable contra el protocolo ObservableObject.

Uso Observation proporciona a su aplicación los siguientes beneficios:

  • Seguimiento Optional valores y colecciones Collection objetos, lo cual es imposible cuando se usa ObservableObject.

  • Usar primitivas de flujo de datos existentes, como @State y @Environment, en lugar de equivalentes basados ​​en objetos, como @StateObject y @EnvironmentObject.

  • Actualizar Views basado en cambios en las propiedades observables que lee body específico Viewen lugar de cualquier cambio de propiedad que ocurra en lo observable, lo que puede mejorar el rendimiento de su aplicación.

Por lo tanto, todas las explicaciones de Paul Hagerty sobre la única “fuente de verdad” (fuente de verdad) sigue siendo cierto con el reemplazo del protocolo ObservableObject a macro @Observable, @StateObject a @State, @EnvironmentObject a @Environment, @ObservableObject elimínelo por completo o reemplácelo con @Bindable, todo esto se describe en “Reglas de migración del protocolo ObservableObject a la macro @Observable”. En el resumen en ruso, todas las notas necesarias se hacen en los márgenes y para todos los ejemplos de demostración en GitHub Se presenta una versión marcada como “Observación”.

Además, lo más impresionante es la sencilla explicación e implementación del subproceso múltiple (async, await, Task) cuando un usuario descarga una imagen de Internet basada en una abstracción como una máquina de estado, con manejo de errores paralelo (throws, try, do {} catch {}).

El método de almacenamiento requiere una mención especial. DocumentGroup datos percibidos por los usuarios como “documentos”, que es exactamente lo que es nuestra aplicación arte emoji. DocumentGroup capaz de transformar arte emoji en una aplicación de múltiples documentos que se ejecuta como una aplicación nativa en el entorno Files la forma en iOSy en Mac. Debo decir que no hay mucha información en Internet sobre el uso completo de DocumentGrouppor lo que esto es sólo un regalo para quienes crean aplicaciones basadas en “documentos”.

Enlaces:

  1. Sitio original del curso de Stanford CS193P “Desarrollo de aplicación iOS usando SwiftUI” semestre Primavera 2023 (inglés)

  2. Notas del curso de ruso CS193P Primavera 2023 (ruso)

  3. “Reglas de migración del protocolo ObservableObject a la macro @Observable”.

  4. Acecha tus datos en SwiftUI 5 con Observable

  5. Observables anidados en SwiftUI.

  6. Comparando @Observable con ObservableObjects

  7. SwiftUI observable en iOS 17.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *