2.231 oyentes
Arturo Rivas y Julio César Fernández repasan esta vez las novedades de la nueva versión beta de iOS 16.4, pero contando las novedades a nivel de desarrollo.
Y también os cuentan algunas cosas que la nueva versión Swift 5.8, ahora en beta, nos ha traído.
Entre las muchas cosas, la esperada retrocompatibilidad de SwiftUI que podría llegar en la próxima versión del sistema si Apple aprovecha una nueva función llamada backDeployed.
Suscríbete y no te pierdas el podcast dedicado íntegramente al desarrollo en entornos Apple con el lenguaje Swift de Apple.
Convierte en un Maestro del Desarrollo iOS con el Swift Mastery Program 2025. Encuentra toda la información pulsando aquí.
Suscríbete a nuestro canal de Youtube para seguir el podcast también en vídeo: Caffè Swift en YouTube
Arturo Rivas
Julio César Fernández
Transcripción
Cuonda, la comunidad de podcast independientes en español. Bienvenidos a CAFÉ SWIFT, el podcast donde hablamos del lenguaje de programación SWIFT de Apple, solo no. Hablamos de programación, de herramientas para desarrolladores y de distintas experiencias, pero siempre desde el punto de vista de desarrolladores en entornos Apple y del lenguaje SWIFT. Y esos desarrolladores somos Arturo Rivas y Julio César Fernández.
¡Comenzamos! Muy buenas y bienvenidos a un nuevo café, a un café de esos cargados especiales, un espresso en su punto, tomado en la cafetería favorita de todos los developers de SWIFT, el CAFÉ SWIFT. Y por supuesto aquí tenemos a nuestro compañero barista, a nuestro amigo Arturo Rivas. ¿Qué tal Arturo? Bien, mira que me han llamado cosas Julio, pero creo que barista no estaba en la lista de cosas que me han llamado.
Pues bien, como siempre Rivas en una semana, bueno un capítulo, un episodio más con muchísimas ganas porque es que este mundo de SWIFT no para y además es que parece que nos cuesta más que dar y van saliendo más cosas y más cosas y más cosas y no encontramos el momento, parece que están intentando, bueno que nos están forzando. De hecho Julio yo creo que ya me has mandado tres o cuatro mensajes diciendo que nos están
obligando a grabar Arturo, nos están obligando. Sí, sí, están ahí, nos están forzando psicológicamente para que para que grabemos porque bueno, nada más que yo creo que es una de las cosas que obviamente hablaremos hoy que es con el tema del maravilloso Back Deployed, esta cosa que nos hemos encontrado de pronto y que es como, Dios mío, puede ser esto lo que creemos que puede ser, podría serlo, técnicamente lo es y todos los técnicos coinciden en que sí es así.
Bueno, es una de las cosas y luego pues todas las novedades de SCOUT 14.3, de SWIFT 5.8 que ya lo tenemos con nosotros y que todavía no se sabe si la versión de septiembre de este año será la 6 o la 5.9, ¿tú cuál crees que decidirá Apple finalmente? Pues la verdad que no lo sé porque me pilló de sorpresa porque estaban saliendo muchas cosas de las novedades de SCOUT y ahí fue cuando me di cuenta, vale, que es que SCOUT
tiene una versión mayor, digamos, porque cuando empecé a ver que había muchas novedades dije espera, espera, espera, algo me estoy perdiendo y precisamente es que la nueva versión de SCOUT, la 14.3 si no me equivoco, ya viene con SWIFT 5.8 que es una de esas versiones que a priori no parecía que iba a tener muchas cosas pero que ha resultado sorprendente y ya os hablaremos, entonces la verdad es que no lo sé pero es posible que veamos una
versión 6 de SWIFT, lo que pasa es que ya lo hemos comentado hace, diría, dos o tres episodios que iba a tener bastantes cosas del core, vale, de la propia librería bastantes cambios entonces quizás por esa parte a lo mejor esperen pues eso a una versión de primavera del año que viene o así para hacer esos cambios profundos, vale, que muchas veces no son tan, no impactan tanto a nivel de uso, o sea, de los programadores no notamos tanto
porque no hay cambio de APIs ni muchas APIs nuevas pero por dentro la librería sí que pasa a tener muchas muchas funcionales nuevas y bueno en términos de rendimiento mejora. Claro y además una de las cosas que se supone que están puestas pero yo no sé cómo tendrán eso de adelantado es la inter operabilidad con C++ que era una de las partes que se pretendía llegar con SWIFT 6 y luego la parte de la programación diferencial, vale, la parte
de que permitiría poder utilizar SWIFT como un lenguaje de cálculo computacional igual que se puede hacer ahora con Python. Claro yo no sé hasta qué punto tienen avanzadas esas dos implementaciones también había un tercer un digamos un tercer objetivo que era el de la implementación de un nuevo modelo de memoria basado en la ley de exclusividad que es por el que no lo sepa aunque lo hemos comentado creo por aquí básicamente es que
nosotros sabemos que ahora mismo cuando una variable cuando una constante cuando hacemos un let o un var dentro de un ámbito cuando el ámbito muere el let o el var desaparecen desde lo que es la memoria, vale, los elementos viven en el ámbito que los crea en los sub ámbitos creados desde ese ámbito pero cuando el ámbito que los crea muere el elemento desaparece pero Apple se plantea la implementación de una ley de exclusividad por la que yo podría
modificar el ciclo de vida de un elemento para que cuando yo cree algo dentro de un ámbito le pueda decir que subsista más allá del ámbito que lo creo. Sería algo así como una especie de guard pero entre ámbitos de nivel inferior al que yo estoy creando de esta manera yo podría crear por ejemplo pues lo típico no que no podemos hacer un if crear una variable y que luego esa variable exista fuera de ese if vale por ejemplo pues
cosas así vale pero en fin no sé cómo lo implementarán porque ya sabemos que Swift lo prima la seguridad etcétera es el único lenguaje que implementa un modelo asyn await que requiere un contexto completamente distinto al contexto normal de desarrollo vale porque en C sharp etcétera si le haces un await al hilo principal pues se la repanfifla y te lo hace tal cual vale en Swift eso no es posible vale por la seguridad del propio sistema
y la estabilidad del mismo pero bueno veremos a ver yo desde luego teniendo en cuenta que Apple parece que está hasta arriba con el tema de las lentes y que ha tenido que echar muchas cosas o parar muchas cosas yo ya realmente no sé qué esperar vale pero bueno está bien vamos vamos a la WWDC que por cierto debería de anunciarse en las próximas semanas no digo yo sí sí pero es que Apple y con lo que estás diciendo y a lo mejor se sale
un poco del ámbito del podcast pero sí que es del mundo de la tecnología Apple este año se ha encontrado una encrucijada porque se supone que va a ser el año de las gafas de las gafas del beta verso la realidad aumentada o todo eso en general y de las gafas de Apple en particular pero parece que a principio de año lo que es este lo que se está hablando y de lo que toda la había un terremoto en la industria tecnológica perdón es de la
inteligencia artificial de los modelos y demás entonces Apple sabemos que Apple ha hecho una conferencia interna no WWDC pero interna para ver el estado que se supone que ya la ha celebrado otros años pero bueno parece que se ha acelerado este año para ver en qué punto están porque creo que es lo que se va a llevar este este año entonces es que es muy complicado saber que qué va a hacer Apple con esto porque no pueden ignorar
directamente y decir no nosotros estamos centrados en nuestras gafas lo que pasa que también es lo que decían porque esto es un poco como la oportunidad vale ha salido OpenAI con chat gpt de repente Microsoft ha cogido y ha metido ahí la mano y ha dicho oye hazme eso para mí y no he dicho bien para acá sino que que lo llevaba mucho tiempo ya probando exacto según Satya Nadella desde agosto del año pasado ya estaban probando bing con el modelo
promisius vale que es entre comillas es una especie de gpt4 pero que no llega a ser gpt4 y lo llevan probando insisto desde agosto del año pasado o sea nos vienen tomando el pelo desde entonces como a no yo no sé nada tal claro todo eso ha tenido que salir google corriendo a decir se ha tropezado y al tropezarse se le ha caído un 10% de sus acciones al suelo buena metáfora a que sí entonces google ha salido y precisamente se ha trastrabillado
al tener que salir rápido diciendo oye espera que nosotros también tenemos algo incluso mejor lo que es que no lo hemos lanzado al público y aquí es donde viene apple que apple siempre se supone que las cosas hasta que no las tiene masticadas no no las saca pero hay muchísimas dudas sobre si apple tiene algo ya no mejor sino mínimamente igual o no tan o no muy retrasado a lo que están presentando en microsoft y google claro es
que a ver por aunque sea un poco todavía no entrar en materia que estamos todavía con la intro pero esto es un tema que le importa a muchísima gente hay que tener en cuenta que a ver estas cosas como yo creo que cualquiera que nos escuche entenderá que esto no se hace de la noche a la mañana que hacer una inteligencia artificial como esta open y ahí lleva desde el año 2015 cuando fue cofundada por el o más que no podemos olvidar quién
está ahí detrás vale aunque el propio lo más hace unos días ha salido a la palestra diciendo que desde que microsoft ha entrado ahí que se ha perdido un poquito el espíritu fundador de todo abierto y tal y que ahora hay muchas cosas cerradas y que a él no le parece tan bien etcétera etcétera dijo que él le puso el nombre de open precisamente para que fuera o para que fuera open ya no es open no no es open no no tiene ni uno solo
de los modelos actuales son son bueno bueno creo que si whisper es abierto si no me equivoco que es el modelo de transcripción y te puedes descargar el código y tal lo digo porque yo lo estoy utilizando y arturo no te lo puedes creer es magia negra o sea es una absoluta magia negra o sea tú sabes lo que es darle un vídeo como el que estamos hablando tú y yo ahora mismo de acuerdo y que te saque los subtítulos en web vtt o en srt directamente
perfectamente sincronizados y entendiendo cada palabra en tu idioma cada palabra en inglés cada marca que hablas de iphone ipad y te los escribe perfectamente dentro del subtítulo que entiende perfectamente cualquier tipo de palabra que no te pone las dudas si tú en un momento determinado cuando estás hablando pone tú coges y estás hablando no y dices pues la la cosa está de la que estamos hablando y ha repetido dos veces en
la pues eso te lo obvia del subtítulo y sólo se pone en la pero que cosa de verdad es increíble los signos de admiración los signos de interrogación los puntos las comas o sea de verdad es absolutamente alucinante vale y esto se lo puede bajar cualquiera de acuerdo o sea está en github es un programa que se puede descargar os invito a que miréis el programa que es whisper cpp que está es una versión de whisper y hay en c++ que se puede descargar y lo puedes compilar con su
make maravilloso en cualquier mac con apple silicon y que funciona por línea de comando la única pega que tiene entre comillas es que el audio del vídeo tiene que estar a 16 bits y 16 mil hercios para que y en mono para que el modelo sea capaz de escucharlo convenientemente pero o sea es magia esa es que no sea para cualquier tipo de persona que trabaje en el mundo del subtitulado esto es y bueno y en fin nosotros obviamente todos
los vídeos que estamos haciendo ahora los estamos pasando por ahí para sacar subtítulos y es que nos está facilitando la vida pero unos niveles estratosféricos no sé volviendo un poco al tema no o sea efectivamente la inteligencia artificial está ahí y no podemos olvidar que ya se rumoreaba que apple decían que estaba creando o se estaba planteando crear un buscador si te estás planteando crear un buscador y hoy día sacas un buscador
y no tiene algo como bing esa de donna rival o sea está muerto antes de llegar o en el momento en el que llegas entonces y luego también se hablaba de que apel estaría haciendo una nueva siri mejor que comprendiera mejor que tuviera algo más de inteligencia artificial porque si no tiene inteligencia artificial más allá de el modelo nlp del natural language processing no tiene mucho más vale luego a la hora de lanzar son ifs de acuerdo pero
esto no es cuestión de que no es que lo diga yo es que lo he visto el código vale pues porque siri kit funciona así funciona por if a través de intención de intenciones de siri o sea eso ni es inteligencia artificial ni es nada y alguno dirá más que apple no no es que alexa y google assistant funcionan igual o sea que esa es la gran ironía de que google sea pionera en el mundo de la inteligencia artificial pero ni una sola de las de los
modelos que han lanzado los han aplicado en sus productos todo han sido como investigaciones que eso es lo que yo creo que va a dar lugar a que google tarde mucho más de tiempo en hacer que sus prototipos se conviertan en un producto final entonces está la cosa complicada así pues si además en el caso de apple ya te digo no sé si es que tienen cosas ahí en la red cámara y no y aunque sean cambios por debajo o sea por ejemplo yo te pongo un
ejemplo que ahora voy cada vez que salgo a la calle o voy con un perro voy con un carrito normalmente entonces estoy disfrutando mucho con un perro vas oyendo a pelcón y no normalmente voy voy a utilizar mucho la función del dictado y sí que ha mejorado vale y todo esto del dictado que puedas ir cambiando es alguna palabra no te la reconoce que puedas cambiar sólo esa palabra y tal está muy bien pero sí que tiene muchos fallos entonces me cuesta
creer que apple aunque sea muy una compañía muy secreta que hasta el último momento no desvela sus cartas pero me cuesta creer que de un salto tan grande entonces no lo sé y sobre todo porque se supone que están centrados y están quitando un mogollón de gente de otros proyectos para las gafas de la red aumentada no para la ya que vale lo que decimos siempre no por meter a 200.000 tíos vas a hacer algo más rápido vale requiere pues una organización
y muchas cosas más pero bueno yo entiendo que si por un lado tendrás a la gente que estará haciendo modelos entrenando demás pero por otro lado tendrás que tener a gente pues haciendo la parte de programación para enganchar digamos esos modelos con las aplicaciones porque al final es lo que yo pienso que va a hacer apple porque lo que va a hacer apple a lo mejor es precisamente darse prisa en mejorar la interrelación de su y con librerías
de python de c++ y tal para hacer de puente vale que tú tengas los modelos que no los haga apple que los haga otro pero que los puedas integrar fácilmente como hice en su día que ya lo comentaste que puedes importar fácilmente en core ml los modelos no sé si sea stable diffusion.
De hecho he estado yo trabajando también haciendo pruebas de coger los modelos de stable diffusion 1.4 1.5 e incluso el 2.0 y a través de un script de python que tiene publicada la propia apple como el código abierto transformarlo a un modelo de core ml y poder utilizarlo directamente en una en una aplicación y usando la aceleración del motor neural que es lo importante que yo creo que ya es una parte que apple va a optar por eso vale en plan integrarlo vosotros yo os voy a dar las herramientas vale buscar
vuestros modelos o tal buscaros esa parte vosotros e integrarlo en las aplicaciones que hagáis para para mi plataforma pero mucha gracia de esto es que la propia apple lo utilice dentro del sistema o sea para mí lo que tiene que presentar apple pues que ya te digo porque algo para meter inteligencia artificial en modelos de machine learning mejor dicho en las aplicaciones es lo que ya tiene, tiene una librería core ml que puede hacer interoperable
con otros modelos pero la gracia está desde mi punto de vista en que lo integre dentro de sus sistemas en lo que en qué pues eso en spotlight en todos los lados vale que cuando vayas a hacer algo pues haya unos modelos que rápidamente te sugieran hacer las cosas ya vemos cómo funcionan los modelos que hay ahora que yo siempre que voy a spotlight a buscar una aplicación o sea a intentar a ver si he adivinado qué aplicación puedo
querer en el momento nunca la encuentro en 3 a 8 que te ofrece porque al final la implementación de las intenciones de Siri es totalmente arcaica y fuera de todo vamos a mí que me digan que ahí no hay ya ni hay nada o sea y hay un montón de hips cutres mal hechos y eso te va a decir es que es como un log un histórico y ya está y le va a ir dando puntos a lo que más tenga pero no es algo eso que es un modelo que precisamente prediga
a ver yo lo que siempre he dicho siempre que hablo de diseño de apps de cómo debe ser una app y demás pues una app y un sistema operativo para mí y vamos a centrarnos en el iphone para mí un buen sistema operativo un nios bueno sería el que yo desbloqueo o incluso no desbloqueo miro mi iphone y veo lo que quiero o sea precisamente que adivine lo que quiero exacto y eso es algo que precisamente estos modelos pueden hacer claro es un poco
a ver yo por ejemplo ahora momento spam yo todas las semanas publico al menos una o dos veces dependiendo del tiempo que tenga estoy publicando en el canal de youtube de apple coding en youtube.com barra arroba apple coding vale entonces estoy sacando los apple coding dailies tanto en podcast como en vídeo y en muchas ocasiones pues obviamente para el propio podcast hago investigaciones el otro día hablé sobre videojuegos hablé sobre
la librería gráficas y hay determinados datos pues que no tienes claros vale yo no recordaba de memoria con si realmente direct x 1.0 salió con windows 95 o no o no recordaba el año en el que se creó open gl o el año en el que se fundó la la el cronos group no es lo que es el consorcio de empresas que llevan el tema de open gl del ya extinto open cl de vulcan etcétera entonces como no no me acordaba de esos datos pues fui a google
a buscarlos y tal nada que no había manera de encontrar el dato o sea ni siquiera porque ya ni siquiera te sale la wikipedia como primer resultado en el momento que buscas y pones la pregunta no hay manera o sea google es un auténtico desastre o sea google es lo peor del mundo vale de la humanidad inmediatamente dije y qué haces eres tonto o sea abre bien vale abri bien plum en qué año salió direct x 1.0 según los resultados direct x 1.0 salió
el año 1995 junto a windows en t4 y windows 95 estupendo en qué año apareció open gl open gl fue lanzado por esta persona y esta persona en el año vino en el día no sé qué no sé cuántas de 1992 como estándar de nada hasta acá está hostia es que sea capaz de darte la respuesta que tú estás pidiendo de manera real y no una basura en base a lo que son palabras claro en base a resultados de palabras clave es que yo fíjate
que llevo tiempo probándolo y tal pero en ese momento de comparación el tiempo que yo me ahorré en tener que y como ese varios datos que estuve buscando para porque era un recorrido histórico vale es que es un mundo es que yo ya insisto para qué para qué quiero usar google de hecho tú mismo publicaste que me hizo una gracia terrible que google ha comprado la palabra clave bing en las búsquedas de apple porque si tú ahora
en el app store buscas bing para bajarte la app de bing que ya tiene bing copilot metido en la app de ios te sale como como búsqueda comprada la app de google y es como de verdad que tristeza más enorme de verdad de mi vida es que a ver ya te digo bueno no nos vamos a liar pero a ver ahí pues google está en una posición complicada porque le están echando abajo el modelo que tiene porque precisamente si empezamos a dar resultados de esta manera
pues ya lo de pagar por salir ahí pues ya se complica un poco un poco el modelo y para no liarnos más julio después de esta introducción toca la primera pregunta que hacemos en todos los episodios y es que hemos estado haciendo exacto así que allá vamos y cuéntanos arturo que has estado haciendo porque yo no he apuntado nada tendré que improvisar pero no he tenido tiempo para apuntar lo que he estado haciendo
claro tú tienes más tablas y puedes improvisarlo yo me tengo que hacer un poco un poco de guión y aparte la verdad es que he hecho muy pocas cosas vale porque he tenido bastante poco tiempo he estado revisando apps que tenía antiguas y remozando las un poco poniéndolas a punto cambiando cosillas y nada dos cosillas que me he encontrado yo creo que lo puse en el grupo que tenemos en telegram de café o de café suiz perdón de suiz porque bueno
hay un problema en su UI que los el wrapper el property wrapper arroba fetch request cuando haces ya lo hemos hablado una operación en batch y actualizas actualizas muchos muchos registros y luego se los metes actualizas el contexto si tienes un predicate se fuma el predicate y no te aparece absolutamente nada he hecho una guardadilla que es cambiar el predicate a que no haya y luego volver a hacer mi predicate cuando detecto el cambio
de el cambio en un contexto y me funciona pues bueno esas cosillas he puesto un radar de estos de apple para que lo mejoren y a lo mejor en 4 o 5 años lo ven porque bien en los foros vi dos personas que lo había puesto en los foros de desarrollo de apple y nadie le había le había contestado y luego otra cosa me encontré quería migrar ya tenía dos mapas digamos y uno de ellos estaba ya en su UI y el otro no estaba con la librería
de UIKit y me he encontrado que la librería de su UI de mapas le faltan un montón de cosas de personalización y aparte el rendimiento es fatal cuando metes muchos registros y un first request vale entonces lo que me he hecho es un contenedor y controlo muchas muchos controles los controlo desde su UI vale con un ZStack muy sencillito y luego le voy pasando a un MapView que es un UIView representable vale ahí le voy pasando las interacciones
pero toda la parte de que va con delegados del mapa de pintar los pines de cuando le das al pin que te aparezca un pequeño pop up y todo eso eso lo manejo desde UIKit porque aparte la API de su UI de mapas todavía está un poco verde que como siempre hasta que apple alguna de las aplicaciones nativas que necesite o sea con su UI y necesite los mapas pues no incluir en la API como ya hemos hablado muchas veces y no es que el tema es al final
siempre no sé cómo lo hacemos que siempre damos cariño a CoreData y creo que hay una cosa muy interesante a ver desde aquí aprovecho para mandar un saludo a Asier García Morato que es CEO de Cori que es una aplicación para la diabetes con inteligencia artificial y que además ha tenido el apoyo de Apple vale una persona que bueno pues si Jobs quiere estará pronto en Apple Coding porque vamos a hablar con él de cómo ha sido su proyecto
etcétera etcétera y el otro día Mastodon vale que estamos en Mastodon también es un nivel absoluto vale compartía el hecho de que había quitado CoreData y lo había pasado todo a real con la aplicación y le decía a uno uy verás tú cuando Julio se entere que te comulga y claro yo no tuve más remedio que decirle y leo literalmente CoreData y CloudKey es una solución desfasada e ineficiente con comportamientos aleatorios sobre todo
en la parte Shared que es la última que pusieron porque esto lo sé por ti que has tenido problemas con la parte compartida de CloudKey porque tenemos la parte pública la parte privada y la parte compartida que es pues como cuando compartimos unas notas o lo que sea y de hecho el otro día que me invitaron los amigos de manzanas enfrentadas a los que mando un saludo desde aquí me decía uno de ellos que claro yo le dije pues la app de Freeform es una
maravilla es estupenda es increíble tal yo la verdad que estoy encantado pero claro yo trabajo yo solo y él me dijo sí sí trabajando tú solo es maravillosa como se te ocurra compartir la pizarra que ya sabemos que usa también CloudKey resulta que no se refresca lo que uno ha pintado el otro no le llega hay versiones distintas luego vas tú a pintar y de pronto te aparecen las versiones que se habían atascado hace cinco minutos o sea
es un auténtico desastre vale lo cual demuestra pues que efectivamente Apple ahí ha perdido el tren o sea de hecho le continúo diciendo así es digo entiendo perfectamente que se hayan ido contestándole no a la persona que comentó pues eso que hay que ver cómo se entere julio no entiendo perfectamente que se haya ido a realm siendo algo más moderno y eficaz aunque sea un framework de terceros vale muy importante la diferencia entre un
framework de terceros y una librería de terceros no es lo mismo vale yo de las poquitas poquitas poquitas cosas que puedo llegar a recomendar de terceros una de ellas es real vale entonces y añado Apple tiene que sacar ya SwiftDB y un nuevo CloudKey en vapor o sea vamos más allá ya no sólo SwiftDB señores de Apple no sólo necesitamos core data en Swift necesitamos que todo CloudKey vaya a la basurita que es donde había tenido que estar siempre y tengamos
un nuevo CloudKey que tendréis ahí claro un php de cuando franco era corneta que lo mismo está todavía en php 5 pues no sabes y que se haga un CloudKey en vapor tío pero pero de verdad si tenéis las herramientas que reinvente el servicio que está totalmente obsoleto es que de verdad da mucha penita que cada vez que hablemos de la nube con Apple es que tío es que pierde y repito y tiene las herramientas porque imagínate cómo sería
un core data reactivo declarativo en a base de funciones filter etcétera de programación funcional que es como está en vapor básicamente lo que es fluent vale en ese plan con los tray await etcétera etcétera bueno bueno bueno eso sería un placer orgásmico absoluto pasar de core data que es un infierno en la tierra y eso que repito con la parte de los arroba ferry que es que tú has comentado y tal está medio bonito vale pero y luego
lo de cloud key de verdad es que además tiene la misma interfaz de hace cuánto desde hace siete años 8 como es una el problema es que es una solución en un parche a otro parche otro parche exacto es claro hereda todo lo anterior nunca han hecho borrón y cuenta nueva porque sobre está todo toda la parte de sincronización de cloud key bueno de hecho cloud key nace como base de datos en la nube a partir de core data luego cuando han hecho
que se comparta y la sincronización media automática también estás partiendo de todas las abstracciones y la manera de funcionar de cordata entonces claro se les ha creado un monstruo horrible y yo todas las wc sueño con esas dos cosas que has dicho por un lado una base o sea un motor de base de datos o digamos un framework de base de datos nuevo para suite y también eso que la parte de back end de apple de cloud key por la modernizen
y quiten ese código que tendrán pero algún día nos tendremos razón algún día si esto es como decir no pues apel no sé que sacará un nuevo mapuguer no pues al final algún momento acierta el ser un poco michiguanos en ese sentido y nada y la otra cosilla que he estado esta estas semanas es me he leído un libro sobre desarrollo software vale llamado a philosophy of software design del autor es john oster
hood de él es un profesor de la universidad de stanford que está muy bien vale porque te habla como de cosas primeras trazas pero luego te da muchos ejemplos además eso como es profesor pues dice pues les pusimos este problema a los alumnos y muchos tiraron por aquí que es esta manera de diseñar la verdad es que me ha gustado muchísimo y me quedaría sólo con una idea a la hora que dice a la hora de hacer clases de hacer funciones vale
él ve como dos partes la interfaz es decir lo que van a usar otros o lo que vas a usar tú mismo de esa clase vale la interfaz le podemos llamar las funciones públicas las variables globales que declares como públicas bueno o que no declares como privadas vale y luego la implementación que es el código que está dentro que no se va a ver vale y hay como un principio que propugna la publicación que dice que mantengas la interfaz sencilla
y luego la implementación lo que no se ve ahí ya puedes complicarte y también dice que dentro o sea en la interfaz que hagas interfaces sencillas pero luego que dentro de la implementación no hagas muchas interfaces dentro sino que ahí en la implementación ya puedes hacer funciones más grandes no hagas ocho funciones para de cuatro líneas para no hacer una función de 20 y cosas así vale te dice como que mantenga siempre la
interfaz de que va a usar la gente sencilla vale ya de entender y utilizar y luego ya la implementación por dentro que la hagas que no te preocupe complicarla aún así explícala muy bien vale luego te habla que en la interfaz comenta las funciones de la interfaz muy bien cómo se interactúa y por qué le pasas esos parámetros y un pelín como por qué vale porque se llama esa función y cómo funciona a nivel abstracción y luego en la implementación
pon comentarios pero encima de ciertas líneas o encima de bucles o encima de digamos de módulos para explicar cómo funciona ya nivel implementación de por dentro de ese módulo y la verdad es que está bastante bastante chulo sobre todo te habla de cómo diseñar de manera intermedia vale para cosas que pueden o no crecer que es el problema de muchas veces que a veces te pones a hacer algo dices voy a hacerlo sencillo porque esto no va a resolver
este problema y ya nadie lo va a cambiar y si hay que cambiarlo es un cristo porque al final hay que borrarlo y volverlo a hacer y otras veces que es al revés haces una aplicación creyendo que va a tener un montón de recorrido con muchísimas clases súper organizado diferentes niveles de abstracción y luego lo utilizas una vez iba siquiera vale entonces la verdad que lo recomiendo mucho pues está muy bien un libro que se llama a filosofía software
design que es en inglés entiendo no vale y es de la universidad de stanford por lo que veo de john auster hout pues la verdad que puede ser muy muy interesante así que dejaremos el luego me pasas a el enlace lo dejamos en las notas del episodio tanto en youtube como porque ya sabéis que esto aparte de estar bueno pues lo que es la parte de podcast que podéis estar oyendo en cuonda pues también queda subido a youtube al canal
de apelco de inacademy que es la bueno pues quien hace posible no que se pueda hacer esta esta producción y que estemos aquí tanto arturo como yo pues yo he estado dando clase pero mucha mucha y mucho mucha clase y mucho mucho clase básicamente fíjate yo a ver puedo sé que puedo sonar muy repetitivo vale pero normalmente cuando vuelvo a dar swift a gente que se supone que sabe swift me sigo sorprendiendo
y ellos se siguen sorprendiendo porque claro siempre te dicen no bueno swift yo ya sé swift claro entonces cuando tal pero cuando coges y le explicas lo que por debajo y swift es así y esto se hace así por esto y esto funciona de tal manera y esto no sé cuál y esto no sé qué y sobre todo lo que nunca falla el momento cliffhanger de las formaciones es el patrón delegate cuando ven cómo funciona el patrón delegate por dentro se quedan como
oh dios mío y de hecho se crea un silencio absoluto que es como y se oye ahí de vez en cuando se oye como un ventilador de intel hay aumentando revoluciones y el momento del arroba escaping esos son los momentos de dios mío de mi vida y claro todo lo que es en general no cuando ves el lenguaje de forma ordenada que acabamos de terminar lo hace nada con él con el bootcamp pues realmente la gente se queda muy sorprendida no decir
uf es que yo no sabía que esto se podía llevar hasta este nivel no y gente que empieza el bootcamp pensando que bueno pues que la parte de swift va a ser algo más liviano menos tal y cuando de pronto terminan la parte suice pues yo no esperaba que estuviera aprendiendo cosas nuevas desde el momento cero prácticamente o sea es que la gente está aprendiendo cosas nuevas en la lección en la que enseño lo que es un led y un bar o sea que imagínate
el nivel a ese respecto entonces la verdad que para mí como formador pues como diría aquel no me llenó de orgullo y satisfacción que pues que eso sea así no que que los alumnos valoren no esa esa parte y que sobre todo valoren lo que yo intento dentro de mi filosofía como formador que es no decirte esto es así porque patata y esto es así porque boniato y ya está no no esto es así porque papá papá papá papá papá papá entonces claro
el entender las cosas desde la base pues es que es un cambio radical yo muchas les digo y todavía les cuesta un poco a algunos el entenderlo porque lógicamente en la educación actual nos tiene formateada la cabeza de esa manera pero yo cuando les digo que lo que pretendo es hackear su mente se me quedan como diciendo este se ha aprendido aquí alguna cosa así en plan marketing que queda muy bonita y pero que está vendiendo la moto
no no o sea realmente yo en mis formaciones lo que intento es hackear la mente de la gente para que entienda que tú no tienes que empezar a programar en cuanto te dicen cómo se programa porque yo lo que hago primero es enseñarte qué es programar y las bases de esa programación pues si yo te acabo de explicar cómo funciona un genérico tú no vas a ser capaz de crear un genérico por ti mismo porque te he explicado la teoría de que es un genérico cómo funciona
y cómo se hace pero tú no puedes porque la gente está esperando que la educación funcione como la lista de los reyes codos o los ríos de españa yo me aprendo los ríos de españa ya me lo sé y ahora va a hacer el examen sale del examen y ya se te ha olvidado y se ha suelto acuerda del libro del tajo y del guadalquivir a tomar por saco vale entonces y como mucho del niño porque te hizo gracia el nombre entonces no vamos a ver en mi caso
no es así si tú aprendes conmigo lo que es un genérico perfecto vas a entender lo que es un genérico pero no pretendas ponerte desde el primer momento a hacer un genérico porque no estás preparado porque para que entiendas no para que entiendas para que veas la practicidad y la aplicación práctica de la teoría que yo te acabo de enseñar para que se cumplan las dos partes y se fusionen como goku y vegeta entonces lo que tienes
que hacer es ir a la parte práctica ir a la parte de aplicación donde vas a ver la aplicación práctica de la teoría y ese es el momento en el que dice ya sé kung fu vale entonces les sigue sorprendiendo esta forma distinta no de enseñar y la verdad pues que es para mí pues es siempre un orgullo el ver que los alumnos pues responden bien y lo agradecen y lo valoran y bueno pues una cosa así curiosa así que eso me estoy dedicando
últimamente te voy a poner un ejemplo hay en internet hay que habrá 10.000 artículos sobre cómo hacer añadir entradas son en cordata y mostrarlas en un listado con su juay 10.000 habrá unas 10 o 15 que te expliquen cómo es un protocolo y cómo aplicar el protocolo y habrá unos dos o tres artículos que te digan que es un valor por referencia y un valor y una variable por valor o sea me refiero que es que del de al fin de recetas hay muchísimo
contenido de un poco de teoría de algo como genéricos protocolos o así hay un poquitín pero de las bases hay muy muy poco o sea muy muy poco y ahí es uno de los que les mola mucho la base hay gente que lleva trabajando dos o tres años desarrollando ya aplicaciones y que está que estamos usando día a día y no sabe no sabe por qué pongo led o bar yo pongo todas led y cuando me dice oye que cuando me dice el warning es como le pongo
bar es que hay gente así que lleva dos y tres años trabajando en esto y eso es un problema a mí no saben luego luego así hay las aplicaciones que hay por ahí de grandes compañías están como están precisamente por eso no hay más es precisamente por eso por falta de formación de la gente que lo está desarrollando es que tú imagínate la gente que me dice esto es literal y muchísima gente me lo ha repetido pues yo pensé que
la roba sea para mí vale el arroba escaping es lo que hay que poner para que te compile y ya lo ponen ahí para pillar efectivamente pero como la propia ayuda del código es un poco que por fortuna ya empiezo hace ya unos años que no veo un código así pero en los primeros años de swift 1 2 y 3 o sea proyectos que llegaban a mis manos para mantenimiento para puesta al día etcétera de encontrarme decir pero pero pero pero pero pero ni un
solo if let por supuesto lo guard es que no sabían qué era y todo admiraciones admiraciones admiraciones admiraciones que es un opcional lo que hay que ponerle una admiración para que compile insisto por suerte ya hace años que no me encuentro nada de eso y está claro que la gente ya lo tiene claro no pero pero bueno hay otras bases que son más complicadas en ese sentido entonces la curva julio la curva de los opcionales porque tú primero
empiezas cuando aprendes a programar todo el rato poniendo admiraciones luego cuando descubres el if let y el guard empiezas a hacerlo todo con if let pasas al otro lado y luego ya se suaviza la curva y ya muy poquitas veces pones la admiración y ya normalmente lo desencasulas pero lo que decían muchas veces la admiración no está mal yo creo que lo hablábamos con marc alguna vez que a ver que hay muchas veces que tu programa
tiene que petar si esa variable es opción se os hace en ese momento ser variables opcional tiene que petar porque algo no está funcionando por ejemplo yo uso las admiraciones para el tema de la creación de urls porque al final la determinadas a la admiración al final es la forma en la que tú garantizas que eso va a funcionar y que es un dato correcto es como cuando en determinadas ocasiones por ejemplo si quieres poner un timer como propiedad
dentro de una clase para poder hacer referencia en el bloque de código a self tienes que declarar el timer con admiración para garantizarle al compilador que el timer existirá cuando vayas a usarlo y entonces te deje usar el self dentro del closure que añades al propio timer sino no te deja te dice que estás usando self antes de que self exista y no puedes hacerlo cuando estás inicializando el timer en el init de acuerdo entonces es un caso
concreto donde tú le estás garantizando al sistema que efectivamente el timer va a existir y de hecho es que lo estás creando en el init en la primera línea o sea que eso es imposible que pete por lo tanto hay determinadas ocasiones donde sí puedes usar la admiración para que tú como desarrollador que sabes lo que hace entiende que suponiendo que sepa lo que haces pero en mi caso pues el tuyo por ejemplo o
en el de mark pues también pues sabemos lo que hacemos pues podamos decirle al sistema no no mira a ver fíate de mí que yo esto lo voy a hacer bien entonces es un poco ese tema efectivamente pues yo creo que vamos más y vamos con las noticias y vamos a empezar con una cortita corta pero no por ello menos menos importante y es que el archiconocido libro de Swift Programming Language que digamos que es el libro oficial
de la documentación de Swift va a ser empezando con la versión 5.8 que hemos comentado antes que saldrá en breve junto con Scope 14.3 va a ser publicado con la herramienta que quizá ya tendrá un par de años vale de generar documentación automáticamente en base a los comentarios del código vale a las funciones que has definido en el código de Doxy con lo cual pues ya no digamos ya no tendrán que escribir un libro aparte e
ir actualizando ambas partes la base de código más o sea reflejando los cambios de la base de código en el libro sino que directamente al cambiar los comentarios al definir nuevas funciones en el código serán autodocumentando y directamente pues lo tendrán que exportar algo harán por ahí en medio pero bueno lo tendrán que exportar con lo que de esta manera hacen pues por un lado evitarse ese flujo y ese cambio donde bueno nos podemos olvidar
de actualizar ciertas partes y demás pero además de esta manera meten esa parte también en la parte pública es decir si tú contribuyes al proyecto Swift pues también estarás contribuyendo a que lo que documentes en ese código quede reflejado en este libro gordo de petete para su hijo pues si de hecho es una lectura que deberíais de tener como referencia vale muchas ocasiones buscamos cosas en internet y nos sale nuestro amigo Paul Hudson que tiene una
un posicionamiento maravilloso pero en muchas ocasiones es más fácil acudir a la fuente y bueno el hecho de que ahora hayan puesto el libro en formato Doxy vale podemos recordar que bueno pues que a ver la noticia es esa no que salió es code 14.3 beta que salió la parte de Swift 5.8 como hemos comentado y bueno pues esta es una de las cosas y Swift 5.8 y Scope 14.3 con IOS 16.4 vale porque vamos una versión menor como has dicho ante
Arturo por detrás con Scope saldrán probablemente para finales de marzo primeros de abril es lo que se denomina la versión de primavera y que todos los años tiene algo más la verdad que me parece muy bien de hecho volvemos a repetir si no conoce si no conocéis Doxy echarle un ojo porque merece mucho la pena vale es muy fácil simplemente cualquier función cualquier clase cualquier lo que sea que ya tengáis hecho comando clic encima del nombre
y veréis que aparece una opción que pone app documentation vale y él ya sólo rellena la plantilla para que automáticamente pongáis la información de qué es la función o qué es la clase qué es lo que hace te cogerá también los parámetros etcétera por lo tanto y te permite crear una ayuda que luego puedes generar desde el menú de editor dándole a build documentation porque al final Doxy significa documentation compiler porque es
un compilador de documentación entonces cuando hacemos un build lo que hacemos es generar esa documentación que se incorpora dentro de nuestro scope y que permite pues incluso luego exportar esa documentación incluso a una página web que es lo que va a hacer apple para poder tener toda esa información ahí disponible desde luego si no estáis utilizando Doxy es algo bastante muy muy muy recomendable y a ver aquí hay unas cuantas
cositas que son un poco mosqueables de acuerdo me explico el cambio de los result builders en Swift 5.8 sumado a lo del arroba back deploy que es otro cambio que también nos ha traído Swift 5.8 vale y que hablaremos en el bloque principal a mí me tiene mosca porque esto tiene pinta de que van a ser cambios importantes en Swift UI no te parece si quieres empezamos por la implementación el cambio de hecho lo llaman mejora porque realmente es una mejora
de los result builders en Swift 5.8 bueno aquí pues comenta o sea la fuente no me acuerdo de dónde lo vimos pero bueno aquí lo podéis ver tanto en la parte de cómo se hizo la propuesta o también en los foros han comentado cómo lo han implementado por si queréis pues meteros un poco más de lleno en cómo está hecho vale pero nosotros vamos a comentar un poco los resultados pues muchas veces precisamente en Swift UI que es todo basado en result builder
pues teníamos bastantes problemas con los el diagnóstico de errores vale sobre todo en tipos contextuales le llaman vale en tipos de el tipo de entrada que tiene que ser inferido en el result builder vale que muchas veces hacía que cuando tienes un error en una parte te la pusieran otro vale o que se soltara el famoso la expresión es demasiado grande para ser evaluada por favor cortarlo en trozos y tenías que estar comentando código para
que al final te sacara el error principal porque se bloqueaba el propio el propio analizador de hecho precisamente una de las cosas que hace es que mejora el tiempo de resolución vale es decir baja ese tiempo para que no salga lo que acaba de decir Julio que muchas veces no tenías nada mal pero simplemente tenía que hacer tantas comprobaciones que no le daba tiempo es un parámetro que se puede cambiar en el scope vale está muy escondido
vale pero se puede se puede cambiar en un sitio para que no te dé este error es decir tú le pones una especie de timeout que si no yo que sé vamos a imaginar que eso no me acuerdo cuánto es exactamente por defecto son dos segundos vale pues si en dos segundos no es capaz suelta el error y para de compilar entonces tú se lo puedes poner más grande y eso es y eso ya no serán errores vale pero bueno la gracia es que esté para mí lo apunto
lo es que lo vi una vez que me pasó lo vi pues buscando por internet a ver cómo arreglarlo y lo vi que uno decía no yo se lo he subido a esto y suyo hay para mí es como otro mundo decía madre mía es que tela porque claro cuando ya empiezas a meter tenemos que tener en cuenta que los result builders son algo parecido parecido entre muchísimas comillas a funciones que llaman a funciones con parámetros de funciones que devuelven otras funciones
o sea es totalmente programación funcional al 100% son funciones que llaman a funciones que reciben funciones como parámetros de entrada para devolver otras funciones y el buen funcionario es de comer aquello y el buen funcionalizador será no entonces al final si yo tengo un montón de parámetros funcionales que encima son genéricos dentro de una función para ir agregando distintos niveles llega un momento en el que cuando
ya estás en un nivel de quinto o sexto nivel de agrupación dentro de un scrollview que está en un vstack que dentro tiene un hstack que dentro tiene otro scrollview que luego tiene un hlazy hstack o lo que sea pues al final llega un momento en el que se pierde en el limbo y ya no es capaz de llegar a validar el conjunto y es un poco lo que pretenden arreglar con esto aparte de la el otro cambio que está también no sé si lo han aprobado
ya o están a punto de aprobarlo de cambiar la forma de las funciones a parámetros variadicos en vez de parámetros fijos para que así podamos poner más de 10 elementos en una misma agrupación yo creo que es una de las cosas que dejaban para swift 6.0 creo que leí la última vez pero no estoy seguro por eso que están todavía es otra de las cosas que están ahí trabajando en ello pues es que habla aquí por ejemplo no sé si a vosotros
habéis tenido algún problema porque yo bastantes con la API de table vale de SwiftUI que de hecho primero era sólo para mac ahora lo pasaron también para bueno para mac os ahora para ios vale que ni os sólo te muestra la primera columna y esto tiene bueno tiene varios tipos de inicializador pero muchos tienen que ver precisamente con inferencia de tipos vale entonces tú a lo mejor le defines la tabla en la tabla defines cada columna
y en esa columna puedes haberle pasado un digamos un array vale y vas cogiendo de ese array una propiedad vale y luego de un o bien si la propiedad de un keypad que es lo que va eso es si la propiedad que le das con ese keypad es ya representable pues un número un string directamente lo puedes no tienes que darle un closer con cómo quieres representarlo pero si no le tienes que dar un closer y ahí es donde hay el problema cuando tú le das
un closer de cómo representar esa propiedad pues la mayoría de las veces no funcionaba y muchas veces veíamos ese error de que no era capaz de resolverlo en un tiempo antes del timeout vale entonces aquí habla de que de un ejemplo de código de una tabla muy simple o sea tiene tres columnas y una de ellas está con esa inferencia dice esto antes se tardaba en resolverse cuatro segundos por el compilador y ahora ha pasado a 0,6 segundos
vale con una tabla súper pequeña y que pues olvídate de hecho yo la mayoría de las veces lo que siempre tenía es una estructura una view de su UI solo con la tabla porque eso ya para empezar te quita un montón de problemas porque como ya lo metieses con otro poco con algún elemento más olvídate claro y esto viene...
perdón perdón no no por completar esto por lo que estoy leyendo viene de la inferencia de los closers extendida a través de multi instrucciones vale es decir anteriormente en un closure cuando devolvías cosas distintas en distintos en distintas salidas había que indicar qué era lo que estabas devolviendo para que hubiera una salida única de acuerdo ahora ya no con el cambio de lo que apple llama el extended multi statement closure parámetro que es la inferencia del tipo de resultado
al final lo que consigues es que no tengas que poner el tipo de salida en muchas de las ocasiones porque directamente él lo infiere igual que infiere el tipo de entrada vale porque por ejemplo el ejemplo más típico era que si tú ponías en una devolución a partir de un if dentro de un closure que devolvía un dato y devolvía en otro en otra parte de if un nil el sistema no era capaz de inferir el tipo de dato y tenías tú que
indicarle que para lo mejor era un int opcional vale pues eso a partir de su 5.7 cambió y el sistema ya es capaz de inferir las múltiples salidas que puede tener el closure para que no tengas que indicarlo y esto es lo que han aprovechado para reestructurar en los resul builders y que sean más prácticos con todo lo que hemos estado comentando pues si esto es uno de esos cambios que decíamos que al final para los que usamos la api nos da nos
da un poco igual pero el caso que ha dicho julio por ejemplo pues mira pues a veces que tenías que definir los tipos pues no se los vas a tener que definir porque bueno yo creo que ya lo hemos dicho alguna vez pero una mientras pueda ser los tipos mientras puedan ser inferidos por el compilador siempre es mejor vale porque si el compilador funcionará mejor y podrá hacer sus propias adaptaciones vale si lo tenemos que especificar digamos
que le cuesta más al compilador porque ya le ponemos una restricción vale todas las cosas que hace por detrás por nosotros pues eso le pones una restricción más con lo cual se lo complicas y eso no pues lo que acabamos de comentar es uno de esos cambios de dentro que a nosotros no nos va a cambiar la api con la que interactuamos vale la interfaz con la que interactuamos con el lenguaje pero por detrás pues estamos viendo que resuelve
un montón de problemas que no son errores per se sino problemas derivados de la implementación que había en ese momento y la siguiente noticia julio la vas a decir tú porque creo que es de las cosas que más te ha gustado de esas cosas que muchos mortales no nos enteramos bueno pero que a otros nos emociona pues sí básicamente la parte te refieres a la parte de él lo de poder ejecutar no no no de esas cosas de la noticia de hombrio a ver cómo te puedes olvidar vale vale vale
vale vale vale vale es que como tenemos aquí un millón de cosas efectivamente se llama si ésta te la pase yo si es que anda que yo también la cabeza ves tú como estoy todo el día y con clase y tal pues no me da la cabeza efectivamente uno de esos pequeños cambios que bueno pueden pasar un poco desapercibidos pero realmente bueno pues ahí está y es que para todos los amantes del desarrollo por línea de comando el pasado 16 de febrero
se lanzó homebrew 4.0.0 y entonces alguno dirá y si lo decís que no soy programadores de verdad qué es eso de homebrew pues homebrew es literalmente el missing package manager de mac os vale él lo que sería pues él el gestor de paquetes que no incluye mac os y que pues bueno se puede incluir directamente y la verdad pues bueno que es una opción que es una versión que ha mejorado bastante el funcionamiento de la propia librería es
una función una un cambio importante que lo que ha hecho ha sido si podríamos clasificarlo efectivamente como el apt del del mac vale y bueno ha hecho un cambio significativo en el uso de las propias fórmulas ha pasado a llevarlo todo por control de jasons ha incorporado mejoras a nivel de velocidad ahora es mucho más ligero mucho más rápido a la hora de actualizar a la hora de mantener los paquetes etcétera y es una parte pues que bueno es
bastante bastante interesante y de hecho pues yo ahora que llevo una temporada probando bastante todo el tema de la inteligencia artificial pues es una herramienta imprescindible para instalar python para instalar bueno pues conda que es el virtualizador de entornos de python que permite crear un entorno para una cosa concreta es como una especie de a ver no lo podemos llamar docker vale porque no es así pero es como una especie de parte en la que
tú creas tus propias como una especie de virtualización del propio terminal con unos elementos que sólo van a funcionar para esa sesión que estás cogiendo y que puede tener incluso sus propias dependencias sus propios paquetes instalados entonces es como un submundo no bastante interesante y que bueno pues tiene todo ese funcionamiento de python etcétera y con el que he estado probando todo esto que he comentado de bueno pues el de usar
whisper y hay en el mac con m1 max en el mac studio probar stable diffusion 2.1 en la función de web pues todas esas cosas vale entonces la verdad que es algo bastante interesante vale y bueno pues ahora ya con esta versión nueva de lo que sería homebrew 4.0 pues la verdad que es bastante recomendable si no sabéis cómo funciona sólo tenéis que entrar en brew.sh y desde ahí pues tenéis la línea de comando para instalar el paquete y desde
ahí pues podéis instalar pues eso insisto jenkins podéis instalar python podéis instalar en fin todo lo que sea y de hecho la propia open AI en su propia documentación tiene instalaciones basadas en homebrew vale o sea que ese es el nivel que hay pues sí pues una herramienta sin duda para hacer cosas ya un poquitín avanzadas que además justo me lo pasó julio dijo hace que no utilizo yo esto pero madre mía el tiempo que hace que no hago yo
no lo hago yo estas cosas a mi ordenador pues si quieres poner fastlane por ejemplo pues es la forma de de poner si yo creo que la anterior vez fue eso pero es que esta semana lo utilicé porque ya os contaré algún próximamente porque estoy haciendo un curso de python y lo he tenido que lo he tenido que utilizar pero bueno eso es ya ya para más adelante porque seguimos con swift porque swift no para y seguimos de hecho en la línea de comandos porque porque con la versión 5.8 de
swift tenemos un nuevo argumento a la hora de lanzar un programa por comandos y es pues barra e que este argumento es algo como ejecución no estoy seguro ahora de porque le han puesto esa e pero lo que hace directamente es ejecutar código es decir nosotros podemos decir swift barra e y luego entre comillas definir una variable poner código en swift y directamente lo va a ejecutar una especie de script vale al final puede ser algo algo parecido pues bueno que nos permite
pues todas las cosas que podemos hacer con la terminal es decir ejecutar un programa y bueno un programa no porque con swift directamente bueno pero programa sin main se podría yo que sé escribes código swift en un documento vale en un fichero y luego con este swift e se lo pasas como como argumento el contenido de ese fichero vale ejecutaría ese script si no quieres hacer un programa entero con el main y compilarlo y demás vale porque bueno una de las cosas que tenemos de
esta manera de ejecutarlo es que no tienes que compilarlo porque tú si tienes un pro digamos tú no puedes tener un fichero un programa en swift y directamente ejecutar el código sino que tienes que compilarlo y ejecutar ese código compilado vale pues de esta manera con este comando de ejecución pues directamente puedes ejecutarlo o poniendo en los literales es decir poniendo el el código swift directamente con argumento o pasándole un fichero y con esto pues en línea de comando
los que los que tengáis callo con esto pues eso pues la salida de ese fichero programa la puedes le puedes pasar como argumento a otro fichero y bueno pues hacer ya y todos los hechizos que quieras y bueno resumiendo que lo bueno de esto es que nos permite usar swift como un lenguaje de script como puede ser pues javascript o muchos otros o hacer un pequeño script de bash vale que yo eso sí que sí que he tenido que hacer alguna vez es como vale me tengo que ver cómo funciona
cómo se hacen los if aquí como tal pues no porque con esta de esta manera si sabes swift pues ya puedes ejecutar el código de forma sencilla sin tener que compilar eso sin tener un programa consume y todo lo que lo que conllevaría un programa en su y yo de hecho una de las últimas veces que más he disfrutado el desarrollo de algo ha sido cuando hice mi última aplicación en swift de línea de comando con él con la librería parsable command es que es que es muy heavy es que
es muy heavy es que te puedes hacer pero es que no sólo eso es que tú puedes coger directamente con file manager y hacerte un recorrido de todos los archivos de una carpeta y procesarlos uno por uno en batch con dos instrucciones directamente con él con él con una instrucción de file manager recuperas todas las rutas en como si fuera como una radio url es vale y se lo pasas a un for vas abriendo fichero la cata cata cata cata cata cata y además es que va volando o sea tiene una
velocidad suite de línea de comando increíble y la última que hice fue una conversor de csv a jason vale que dice así como un testeo mío manual y qué gustito más bueno a ver lo que es bueno porque es muy potente además en nuestro caso que sabe que los dominamos es muy rápido hacer cosas así sencillas parseadores y demás pues al final es un parseador es cosas que conviertan formatos de un formato a otro formato pero el engorro era si lo tienes que compil que hay
que generar un proyecto compilar y demás pues ya es un poco rollo yo a veces lo hacía con playground vale porque en playground digamos que te encapsula tu código y tú le das a play y ya te funciona el código según según lo vas escribiendo pero mira de esta manera pues te puedes hacer un parseado rápido sin tener lo que digo pues que hacer un proyecto o sea un paquete de su y ese general ejecutable y todo eso pues hacer pues como una especie de escribir lo que yo creo que es en
nuestro caso que es gente que controlamos su y pues al final es muy potente pues sí pues quién lee las predicciones de los w porque pusimos también aquí porque de vez en cuando es interesante vale y arturo nos ha puesto aquí un tweet de un desarrollador vale de sindre sor husch que es un desarrollador independiente de mac y de swift vale que hace aplicaciones para mac os y que también hace cositas en no de js eso le hace perder punto
pero resulta muy interesante porque hace en un tweet que publicó hace unos días unas predicciones sobre la wwc que no son predicciones o lo que porque con esto pero exacto porque el primero de ellos es swift debe una un reemplazo moderno de core data y añade it's about time sabes como ya es hora hostia y decimos disclaimer que no no le conocemos y no le conocemos que no escuchas de podcast palabrita del niño jobs yo creo que todos los que tenemos
que sufrir cordata tenemos muy claro que eso tiene que pasar ya y luego bueno pues tiene cositas curiosas por ejemplo nos comenta que a él le gustaría pues de nuevo sin haber oído el programa nos habla de vr y ar con su if you hay que efectivamente todos coincidimos con ello nos habla de una de un cambio con los app intents en la configuración de widget kit se lo compro vale o sea a ver si yo hago un widget hoy y es un widget estático un widget en el que yo decido
qué es lo que quiero mostrar en ese widget y ese widget puede ser sobre datos de usuario vale pero datos de usuario que el usuario haya el usuario haya elegido dentro de la propia aplicación vale por ejemplo yo creo un widget para mostrar películas y utilizo el criterio de las películas que mi usuario dentro de mi app ha marcado como favoritas perfecto y entonces muestro esas películas ahora si yo hago una configuración no estática sino una configuración de intenciones
que está basada en que yo pueda dejar marcado vale yo puedo pulsar el widget y vosotros veréis que al pulsar en un widget en ocasiones aparece un edit que lo que haces cuando tú le das te muestra una tabla o te muestra un desplegable donde te permite cambiar sin abrir la app lo que quieres mostrar en ese widget para hacer eso hace falta un city kit intent y un target distinto como extensión de intent al del propio widget algo que no tiene sentido alguno y además tienes
que poner una extensión que extiende el tipo del propio intent con un constructor por defecto y con unos cambios en los datos para coger esos valores es decir cada vez que yo cuento esto en una formación la gente se desmonta como un señor patata caído desde diez pisos o sea es lo más absurdo complejo lo remato es lo más absurdamente complejo en el sentido de que está puesto tan complejo de una manera que no tiene sentido sabrían mil formas de hacer esto de una manera mucho más
inteligente y mejor que a través de las app intents porque lo notas que es algo que es como que oye y esto no lo hacemos a yo que sé pues ponle esto y ya iremos tirando otro y esto encima y esto y tres años después sigue es como no tío sámelo bien entonces en ese sentido también o por ejemplo nos dice un control de una forma más moderna de manejo de imágenes reemplazando el esto me hace gracia replacing del lower level ancient image io no es como el nivel de cuando
franco era corneta de control de imágenes no es que de hecho yo mucha gente no lo sabe y de hecho mucha gente recurre a librerías de terceros yo creo que hace poco lo compartí tú lo puedes aplicar blur aplicar bastantes con los con los filtros con la propia core image con el concor image filtros y la gente no lo sabe pero porque no lo sabe por una buena razón porque es que es horrible lo tienes que transformar de la lluvia image lo tienes que transformar en una c
y image o sea no un tipo del core image depende porque hay hay algunos filtros que requieren un cg image pero luego te devuelven un c y image que es un core image image que además le tienes que dar el lo que es el rectángulo vale de la propia imagen para que se renderice ahí dentro o sea es como de verdad esta es la manera a pis con unos palabros julio de los tiempos de hoy esticero de las funciones a ver hay una hay una forma de mejorar eso vale si tú importas core image punto
creo que se llama building filters o algo así vale dentro de core image tú pones import core image y luego pones justo después pone punto building filters o algo así y eso te da un pequeño paso en el que todos los filtros de core image te los devuelve como una enumeración y entonces eso facilita algo el problema es que core image incluso con esta implementación que lo facilita no tiene una implementación de no tiene un método de aplica el filtro no no no no tú
creas un filtro de blur por ejemplo conviertes tu imagen en una imagen cg image o en una imagen c y image que por supuesto son opcionales por lo tanto tienes que hacerlo a partir de UI image y cuando ya lo tienes hecho y lo has puesto sobre la propiedad del input ya puedes ir al output a recoger la salida y encima resulta que es asíncrono síncrono es decir que el blur puede llegar a tardar a lo mejor depende del tamaño de la imagen medio segundo o 0,2 segundos porque depende un poco de
lo grande que sea la imagen vale y el efecto de blur gaussiano pues es un efecto que requiere un poco de uso aunque en este caso hacer uso de estos fitos de core image es muy bueno porque utilizan la aceleración del ISP de los propios apple silicon del image signal process del proceso del procesador señales de imagen pero independientemente cuando tú pones la imagen que quieres aplicar del blur sobre el input automáticamente se lanza la transformación por
lo que ya en la siguiente línea tienes que ir al output que te saca un c image del cual tienes que sacar el propio rectángulo que ahora mismo no recuerdo el nombre que tiene pero es también un nombre que no te da a entender para nada es el si es el extent vale del propio de la propia c image para remontar desde una c image una cg image y de la cg image de volver a una UI image que es como de verdad incluso para hacer un propio resize ya sabemos que apple el año pasado nos metió el
preparing thumbnail vale no yo en una UI image puedo llamar a punto preparing thumbnail y ahí tengo dos funciones una asíncrona y otra no asíncrona que me permiten rescalar una imagen de manera directa de una forma muy simple como un método que extiende UI image pues genial porque hasta ese momento la única manera de rescalar una imagen era o directamente utilizando UI graphics con un contexto de UI graphics que es programación en c de begin render context no se que es esto
dios mío o sea programación en c de cuando franco era corneta y luego la otra opción que había que es con los filtros de core image podías usar el filtro del lanczos resizing que es un filtro bastante bueno pero igual volvemos a lo mismo o sea incluso fijaros estos filtros de core image son capaces de generar QR yo directamente pongo un QR generator le doy el nombre sale perdón le doy el contenido que es un data en bruto de lo que quiero mostrar en ese QR incluso puedo darle una
imagen de fondo para personalizar el QR con un logo y una cosa así o sea se puede hacer también pero cuando tú le pides el core image a el QR te devuelve un QR de 16 por 16 píxeles y dice pero qué es esto y tienes que ampliarlo con el tamaño vectorial bueno bueno bueno bueno sea un desastre o sea es algo totalmente arcaico que de verdad es como decirle a apple mira de verdad si aquí alguien te usa una librería tercero es que te lo merece de verdad porque es que menuda
yo creo que esto julio será porque como ataca directamente al isp tendrá unas dependencias de la leche y por eso nadie se quiere meter en ese jardín supongo que irá por ahí porque fijaros en este caso ha dicho julio que lo hace el isp y aún así muchas veces te recomiendan hacerlo en segundo plano porque muchas veces según qué imágenes puede tardar un tiempo y por supuesto bloquear la interfaz pero es que no me acuerdo hace cuánto tuve yo este problema hace bueno
tuve yo que hacer esto no era más de dos años y el problema era que también lo estábamos haciendo una aplicación también para android y es que en android aplicar un blur era no es que fuera difícil sino que lo estábamos probando en varios terminales y necesitaba es un terminal muy moderno para aplicar un blur y calculo porque en ese momento sería porque android lo haría pues a huevo con la con la cpu entonces por eso a mí se me ocurre que en este caso apple al tirar de
isp y demás irá muy rap muy rápido entre cosas más rápido pero tenemos ese problema que estará utilizando pues algunas apis y algún tendrán algunas dependencias que a lo mejor no es sólo migrar la parte de arriba sino que habría que migrar muchas capas por no hacer un grupo que sería la última solución pues te saco un grupo que haga todo esto por debajo y me pones una llamada en suici y pista yo de hecho juraría que el preparing thumbnail de los ua-image el que permite
hacer un reescalado yo juraría que es un rapper del cifilter seguramente o sea en ese sentido es que le haría falta apel julio entonces cogería uno la implementaría diría mira pues enchúfalo a la pide sí pero es un poco por ejemplo como trabajar con él con él con él con el kitchen vale con él la cartera de certificados de verdad o sea hay que crear un diccionario con claves de objetice que ni siquiera son enumeradas porque son constantes de casa no sé qué tal su muerto a caballo y luego
poner no sé qué y luego envías el diccionario y es como really de verdad no hay una forma más bonita hacer esto que no estamos en 2008 apel de verdad no sé yo si quieren tengo uno que es el que utilizo pero si empiezo a mirar a tirar para atrás tengo varias varias estructuras que me he creado para hacer esto amigable yo tengo mis propios rappers para hacer esto directamente todo el mundo saque que tú que de hecho la próxima la gente que vaya a entrar este trabajo que diga
mira yo estos mis bienes son dejó en herencia un rapper que me echó de totalmente en fin un desastre yo creo que porque voy un poco tengo que terminar en menos de media hora o media hora más o menos así que si te parece pasamos al bloque final y las cosas estas que yo creo que lo que nos queda va a dar bastante discusión pues lo dejamos para la próxima vale si te parece así que pues pasamos al bloque principal donde os vamos a contar las novedades que tiene scout 14.3 y
las nuevas versiones de swift pues empezamos tema central novedades de scout 14.3 el pasado día no me acuerdo hace unos días de las semanas de enero pues no fue después fue después porque primero sacaron la versión 14.2 y la versión perdón es que a ver es que la verdad que tenéis que entender bueno a ver sois developers por lo tanto lo entendéis de verdad apple me da y aunque no tenga novedades me da igual pero pero ponme las mismas versiones valesa es un lío que se a ver
es que de verdad me vuelve loco vale el hecho de que sea ios 16.4 pero es que sea la 14.3 porque también van una por detrás yo creo 2 en mac yo creo que van también por la.3 van por la.3 si efectivamente mac os va por la 13 no no perdón peor va por la 13.2 menos directamente si si no es un lío de verdad es un lío absoluto y es que apple no sacó scout 14.3 con ios 16.3 sino que mantuvo la versión
14.2 y ahora con la beta de ios 16.4 tenemos la beta de scout 14.3 donde tenemos distintas novedades y que a ver antes de nada la gente dice uy cuántas cosas ha sacado apple para ser una versión así no no no vamos a ver desde hace ya bastantes años la versión de primavera tiene cositas es algo más algún cambio más muchas julio de las cosas que no les dio tiempo en su momento a sacar en octubre exacto y entre ellas pues varias novedades de su UI de scout de swift etcétera así
que pues la verdad que es bastante interesante entonces bueno coméntanos por ejemplo arturo alguna de estas novedades sobre todo para lo que es empezamos con swift 5.8 empiezan a contar una de las primeras novedades que nos dimos es que venía con una nueva versión de swift no solo no sólo teníamos versión de scout sino que por detrás también venía con una con una versión de swift pues voy a dejar la mejor para el final verdad julio una de ellas es que antes cuando de hecho
yo creo que estoy ahora comentado cuando tengo un clóset que escapa vale pues tengo si quiero hacerlo digamos seguro vale o asegurarme de que y luego utilizar el self vale dentro pues tengo que capturarlo lo puedo capturar normal digamos con self pero entonces claro si no encuentra el set petaría o puedo capturar el self de manera débil no sé cómo traducirlo de week el week sería una captura leve sería una captura leve o floja también siempre con lo que estábamos
comentando que no aumenta el contador de referencia vale con exacto menos hablaba julio al principio no aumenta el control de referencia es decir que aunque se quede esa referencia volando por ahí se va a destruir igual no va a impedir que se destruya esa variable de memoria por culpa de esta referencia que queda ahí colgada vale entonces si no existe esa pues bueno se borra porque no ha sumado una entonces si una vez que hemos hecho eso le hemos capturado week podemos desempaquetarla
es decir hacer un if self igual a self vale igual al self que he capturado con week self y entonces ya si existe puedo seguir la ejecución y si no existe pues no ejecuto pues de esta manera el self va a ser implícito es decir ya no tengo que desempaquetarlo puedo utilizarlo dentro y si es si como no opcional y si no era y si realmente no es opcional no me cascaría vale si no es opcional directamente no lo ejecutaría pero no cascaría vale si no lo desempaquetó también lo
puedo utilizar con interrogación vale ya hemos visto al final de lo que hablábamos tirando de para atrás de los opcionales pues el podemos utilizar los opcionales no desempaquetarlos a lo burro con una admiración sino con una interrogación que eso significaría que si existe que ejecute bueno al final la función o que lea de la barra o que guarde la variable o lo que sea después del punto vale pero si no existe no pete el programa si es un es técnicamente es lo que se
conoce como un opción al chaining es un es un encadenamiento opcional que lo que hacemos es pasar a través de la interrogación entonces si el elemento que tiene la interrogación es nil pues entonces no llega a ver la propiedad o no llega a ver la función correspondiente efectivamente entonces bueno pues de esta manera digamos que nos ahorramos lo que hacíamos muchos yo muchas veces pues lo capturó como week por si acaso no existe y me peta pero luego lo desempaquetó
para poder utilizar el self tranquilamente y en este caso pues no lo no necesitaría y bueno si quieres ya por no por no alargarnos mucho vamos con una de las joyas de la corona vale que nos ha sorprendido a todos yo creo que no lo esperaba y que si te parece explícalo tú julio y luego ya comentamos más las implicaciones que puede o no puede tener pues a ver básicamente todo se basa en algo muy sencillo pero no tan sencillo
nosotros sabemos que ahora mismo cuando yo utilizo a los 16 como target de mi aplicación puedo usar todo lo que swift ha incluido todo lo que suyo hay ha incluido el último año perfecto pues es genial el problema es cuando mi jefe me dice hay es que hay que soportar 15 y entonces estoy obligado a poner el target de ellos 15 en el momento en el que pongo el target de ellos 15 el navigation stack por citar el ejemplo más sangrante al respecto deja de existir y ya no
puedes usarlo y si quieres seguir usándolo estás obligado a usar un arroba viable de decir si está disponible la versión ayos 16 entonces este código si lo vas a meter y si no tal entonces yo lo que estoy haciendo ahora porque como ellos 15 se deja fuera varios dispositivos como el iphone 7 o los iphone 6s el problema que tengo es que bueno pues tengo que poner la parte de ayos 16 aislada con un arroba viable para usar el navigation stack en swift ui pero luego hacer una retro una
implementación retrocompatible que funcione desde adios 15 como target para que esté implementado a través de navigation view para que en ayos 16 se utilice los navigation links basados en datos y en ayos 15 los navigation links basados en vistas de acuerdo entonces bueno pues y si por lo que sea mi jefe es un poco retard vale y no sabe que todo el que tiene ayos 14 también puede actualizar a ellos 15 y por lo tanto todos los usuarios que no quieren pasar de ayos 14 a 15
no merecen ser respetados vale porque no actualizan porque no les da la gana no porque no puedan pues si me obliga a irme a la 14 pues me genera un problema bastante serio porque me quedo sin otros tantos componentes de swift ui que me son necesarios de hecho esto lo has sufrido tú en tus propias cámaras no arturo? a mí una cosa del ejemplo que lo que me molesta es que tú estás imagínate pues has tenido la suerte o tu jefe tu jefe piensa poco vale se informa y dice que vale que ayos 15
pero tú vas a utilizar navigation view y te dice deprecado y dices ah bueno vale está deprecado es que voy a ser un buen señor hay un navigation view que no está deprecado que es solo uno de los constructores vale pero aún así es como perdona dices voy a ser un niño bueno y voy a buscar la función nueva oye voy a hacer las cosas bien pero claro no es compatible con ios 15 y ahí eso me molesta un poco porque nosotros sabemos lo que vale pues sí pues está deprecado
y esto no es pero imagínate que eres nuevo y tú buscas una función y a ti te han enseñado que deprecado no intenta buscar la nueva buscar la nueva dice no es compatible con la versión no sé si está bien que me diga o sea que me marques como deprecada una función que no tiene equivalente en la mínima plataforma que estoy soportando eso está muy mal hecho a nivel de ingeniería de software está hecho fatal básicamente calculó que el compilador tiene como target el ios 16 entonces
claro te va a decir en ios 16 está deprecado pero debería no sé si el propio scout o el compilador por su parte debería saber que estás utilizando aunque estés sobre el sdk de ellos 16 estás soportando ios 15 exacto y entonces al final pues te quedas sin usarlo encima estás usando algo que efectivamente te puede lanzar un warning de ojo que esto ya está deprecado y de esas hay unas cuantas como ya nos hicieron por ejemplo con las alertas que las alertas en ios 14 se hacían de
una manera y en ios 15 cambiaron a otro constructor distinto entonces pues dices vale apel guay estupendo pues bien todo esto vienes a todo este problema de la retrocompatibilidad viene por dos cosas muy concretas la primera de ellas es que en versiones a toda la base es que SwiftUI es una librería que viene cargada en el sistema operativo por lo tanto si la versión que viene cargada en el sistema operativo ios 14 es SwiftUI de ios 14 obviamente no va a tener las nuevas alertas no va
a tener el navigation stack no va a tener todas las no va a tener el searchable no va a tener el el refreshable no va a tener los elementos que pertenecen a la sdk de ios 15 porque la librería de SwiftUI está cargada en el sistema operativo y ya está cerrada es un producto que ya está compilado por lo que no incluye las cosas que están en versiones posteriores de acuerdo cuando yo me voy a ios 15 tres cuartas de lo mismo en ios 15 la librería de SwiftUI está como componente del
sistema operativo por lo que no tiene el navigation stack porque es algo que apel ha incluido después entonces cuando un elemento no existe vale y esta es la primera parte que tiene que quedar muy clara cuando un elemento no existe yo puedo añadirlo como una dependencia externa dentro de mi código en Swift es decir qué es lo que no existía en ios 13 y ios 14 pero si en ios 15 cuando fue lanzado async await porque es un módulo es una implementación independiente que no forma parte de
la librería estándar del lenguaje swift en las versiones 13 y 14 desde la versión 12.2 en adelante entonces si partimos de esa base lo que hizo apple fue meter dentro de las aplicaciones que yo haga utilizando async await mete una pequeña dynamic library un dylib que es como un pequeño ejecutable que va dentro de tu propia aplicación pequeñito y que se añade como dependencia a librerías que pertenecen al sistema por lo que es capaz de ampliar lo que unas librerías de sistemas son
capaces de hacer a partir de pequeñas dependencias dentro del ejecutable que nosotros estamos trabajando por lo que si yo trabajo con ios 13 o 14 el sistema mete esa dependencia de la librería async await que es apenas unos cas vale no es mucho lo que ocupa y con eso me permite usar async await en ios 13 y ios 14 perfecto eso permitiría que todo lo que no existe en swift ui en ios 15 14 o 13 y que si existe en la 16 pudiera ser incorporado de forma que apple
podría meter el navigation stack podría meter cosas nuevas que no existan y lo más importante que no dependan de ningún tipo de dependencia que también se haya actualizado y ahí es donde está el gran problema vale porque las dependencias de las que depende valga la redundancia un navigation stack o lo que sea son elementos que sí pertenecen a las versiones anteriores pero no con la implementación exacta que yo necesite sino con una implementación distinta si yo necesito
una actualización de la dependencia de las yo que sé del elemento que dibuja las listas que recibe dos parámetros pero con el navigation stack ahora recibe tres la función que recibe tres no existe en la versión 15 o 14 y es un tipo que insisto ya está en la librería que está cargada en el sistema operativo entonces con toda esta base técnica llega a roba black back deploy back deploy sería decirle al sistema esta función está disponible a partir de ios 16 por ejemplo
el navigation stack pero va a ser back deploy desde la 13 y qué es lo que hace eso pues por ejemplo no serviría con navigation stack para que nos hagamos una idea una de las cosas más bonitas que tiene swift son las extensiones yo puedo extender un tipo del sistema o un tipo propio y añadirle variables calculadas variable funciones subscripts vale puedo añadirse las no puedo sobrecargar funciones que ya existan no puedo poner variable propiedades almacenadas pero sí
puedo meter subscripts propiedades calculadas y puedo meter nuevas funciones y eso lo que está haciendo es ampliar el tipo original yo puedo meter mis propias funciones en el tipo string mis propias funciones en el tipo int o lo que sea vale bien pues esto este arroba back deploy es lo mismo pero a nivel binario para un compilado que ya esté en capa binaria vale esa estos son extensiones a nivel binario para componentes de swift de forma que si a la dependencia que ya
existe de la clase o el strut que ya existe en versiones anteriores de ios 15 14 13 pero no tienen la función o la propiedad exacta que yo necesito para que el navigation stack funcione yo le hago un back deploy y eso funciona como una extensión binaria que añade las funciones subscript y propiedades calculadas que necesite al tipo que ya está compilado que ya es binario de forma que el sistema sabe si tiene que coger la implementación porque esto es otra cosa que
han metido si tiene que coger la implementación nueva o la implementación clásica vale porque el sistema es lo suficientemente inteligente como para ir a buscar primero la implementación que hay en la librería binaria compilada y si no existe coger la que viene como dependencia en el ejecutable por lo que si yo meto una propiedad que no existía en ios 14 pero si en 15 y lo meto desde la 17 lo que va a hacer es que el de la 15 lo va a leer de la librería directa del ejecutable
pero la de la 14 la va a sacar de esa extensión que extiende el tipo binario de esa manera que conseguiríamos uniendo la parte binaria de inclusión de módulos no existentes más el poder y el poder complementar todas las funciones es tipos etcétera que sean necesarios en los tipos binarios que ya existen todo eso daría lugar a que a partir de ios 17 si apple hace todo ese trabajo que tiene que ser la hostia para hacerlo vale conseguiría que toda la API de SwiftUI funcionara
con una única implementación de ios 13 a ios 17 ojo así de simple y así de sencillo lo único julio que ahí claro cuando cuando lo estamos hablando me surgen mis dudas porque una de las cosas que has dicho es que es no tienes que tener dependencias porque si no habría que hacer algo similar en toda la cadena claro de dependencias eso no los eso puede ser o cargar esas dependencias como dependencia en todas las versiones del sistema de y no sé no sé cómo se hace esto es un paso pero
claro a mí me da son dependencias querían dentro del ejecutable es decir técnicamente podría conseguirse todo esto quiere eso decir que lo van a hacer ya no es que el trabajo que hay ahora con esto es brutal o sea a mí no me gustaría estar ahí metido porque ahora tiene que empezar a dar un show de dependencias de tal de no sé qué esto esto tiene que ser como el típico código que coge de suif 1 y lo abres en escudo 14 y empieza a tocar en sitios que jamás habías tocado para
que aquello te compile y tienes que ir parcheando línea a línea pues esto tiene que ser algo parecido sí sí ahora que sí entonces abre la puerta a la esperanza exacto creo que lo has definido perfectamente abre la puerta a la esperanza por un lado pero luego por otro vemos sabemos que es es complicado lo que pasa es que una vez teniendo esto pues a lo mejor en las próximas implementaciones a ver todas las cosas que sólo dependan digamos que imaginaros una nueva api
una modificar lo que sea que sólo esté implementado por dentro la implementación de la que hablábamos antes en el propio en suif o suif u o en la librería suyo y si saliese de ahí sin ninguna dependencia pues es inmediato hacer esto vale y lo que hará pues como decía julio o lo buscará o en la nueva compilación o si no lo meterá como dependencia en el propio paquete y lo cargará y lo cargará
de ahí el código entonces esto sería muy fácil el problema vendría como decíamos en las dependencias que tuviera a su vez ese paquete pero nos viene bien incluso imaginaros librerías de terceros o librerías vuestras imaginaos que tenéis una librería y tenéis una versión de la aplicación que corre con x versión vale pues podrías hacer versiones nuevas y que utilizasen la anterior o sea es que de esta manera te ahorras pues eso pues tener que poner los if
available que tenemos por todos lados en todos los en todos los proyectos y que nos generan pues muchos muchos los dolores de cabeza porque hay veces yo me ha pasado julio seguramente a ti también que es que hay veces que es que es como programar dos aplicaciones distintas o sea de hecho yo y muchas veces opto por no usar lo nuevo de hecho el ejemplo este que pones yo cuando estoy con iOS 15 y iOS 16 sigo con las navigation view porque si no estoy haciendo el trabajo dos veces
yo estoy empezando a hacer la doble implementación vale pero entiendo perfectamente que no todo el mundo quiere hacerlo y es una pena porque navigation stack es maravilloso pero claro es que como tú dices es hacer dos veces el trabajo lo miro como como el gato de shrek miro a la implementación de si yo lo miro como el meme este del niño como diciendo de verdad pues como se nos está pillando el tiempo nada comentar tres cosillas de descodo muy rápidas
tenemos por fin por fin print podemos ver los prints en la consola en las previews de su yubai vale que lleva mucho tiempo pidiéndose y que era un rollo y muchas veces tienes que ejecutar el proyecto solo para ver un print que leches estaba pasando ahí dentro también hay mejoras en la resolución de paquetes de suite package manager por fin también vale porque era súper lento bueno pues han cambiado un montón de cosas si queréis indagar más sobre ello pues nos decís y podemos
mirarlo con detenimiento en otro en otro episodio y bueno y también nos iremos diciendo si es verdad esto que que prometen y luego también que podemos tener una localización del proyecto por defecto vale antes por defecto estaba en inglés y tenías que ir a abrir en texto el fichero de configuración del proyecto descode que es un lío tremendo y ponerlo a mano si querías cambiarlo de inglés por lo que sea pues a lo mejor necesitas cambiarlo pues ahora nos da la opción de tener un selector
vale y directamente lo cambias y luego bueno tenemos nuevos modificadores de su yo hay para las y que esto da también a julio fue una de las cosas que nos escribimos si es maravilloso de verdad que así muy rápido pues te permite fijar el background del propio del propio sí y luego también poder o no interactuar con la parte digamos que queda debajo del sí cuando pones un sitio a media pantalla vale con los de tents que ya vienen de implementaciones anteriores y
dices que se pare el sitio a media pantalla pues puedes elegir si puedes interactuar o no con la parte de atrás si el scroll lo manejas completo y se pisa el de arriba y todo eso vale nos da más opciones y no si tienes alguna cosa así julio que te llamó la atención que tenemos por aquí no básicamente simplemente fíjate que es curioso que justo hace muy muy pocas semanas en una formación pues los alumnos se me quejaban de decir es que esto de los deten es maravilloso pero claro
es que si tú tocas si tú tienes la pantalla y tienes el deten hasta aquí cuando tocas en la parte del scroll que hay detrás el deten se quita porque actúa de manera modal entonces ahora gracias a esto ya no ya puedes hacer que las dos partes sean pulsables entonces puedes hacer la típica aplicación tipo apple music donde puedes tocar en el deten y puedes tocar arriba o el de mapas donde puedes tocar abajo y arriba o de mensajes tener dos focos distintos que además puedes fijar
cuál es el límite de uno u otro ver los distintos scrolls y tal y eso pues la verdad que nos va a permitir crear nuevas apps pues bastante chulas y de una manera muy muy muy sencilla entonces pues la verdad que esto es bastante bien bienvenido pues cerramos aquí nuestro tema central como veis esto evoluciona cada día más rápido tenemos muchas promesas de metaversos y realidades aumentadas y demás pero bueno aquí os hemos traído las novedades en la tierra que están en beta y pronto
estarán disponibles para todos así que vamos con la despedida y poco más ella saque si no decimos no no es lo mismo y pues eso espero que os haya gustado la verdad que bueno hoy hemos tachado unas cuantas cosas del del guión por lo tanto podemos sentirnos satisfecho y bueno pues nos quedan unas cuantas cositas para los próximos programas y seguro que sacarán alguna más porque está todo on fire y nada ya sabéis que podéis escucharnos tanto en
cuonda.com barra café con dos efes guión swift o también y ahí tenéis el acceso a todas las plataformas apple podcast spotify samsung podcast google podcast todo lo que tenga algo de podcast ahí estamos también podéis buscarnos en vuestro podcast el favorito con café swift y también pues podéis escribirnos a café swift arroba con dos efes arroba gmil.com o seguirnos en twitter por cierto habría que crearse un mastodón de esos también no lo queramos en lo mismo no podéis
seguirnos también en twitter de momento por eso como arroba café con dos efes swift vale y ahí estamos para bueno pues para todo lo que se amanecer y también podéis vernos directamente pues en el canal de youtube de apple coding academy en youtube.com barra arroba apple coding academy todo seguido y de hecho el propio vídeo está colgado también de cuonda por si queréis vernos directamente en cuonda.com barra café swift con dos efes café guión swift tenéis
también el programa en vídeo de acuerdo y pues eso y dónde puede encontrarte a ti la gente por ahí cuéntanos arturo. Pues a mí si queréis escucharme tenéis el otro podcast en el que participo que es vidas digitales luego en twitter como arturo arroba arturo ribas a en mastodón como arroba arturo ribas a arroba mastodón punto cloud y bueno tenéis toda esta información en mi página web www.arturoribas.com y a mí pues si queréis seguirme podéis encontrarme como jcfmunoz en
todos lados arroba jcfmunoz en twitter arroba jcfmunoz arroba mastodón punto social también en linkedin linkedin.com barra barra jcfmunoz estamos también en instagram en tiktok estamos como apple coding aquí en twitch lo digo porque estamos emitiendo en twitch en directo pues twitch.tv barra apple coding y bueno pues todo lo que sea o apple coding o jcfmunoz podéis encontrarme ahí para lo que sea menester y nada pues arturo como siempre muchísimas gracias que hoy además estás
desplazado desde tus estudios centrales no hoy estás de estudio itinerante. Corresponsal en santander como no te hemos itinerado para corresponsal soy yo también. Exacto efectivamente conectamos directo con nuestro corresponsal en santander arturo qué tal muy buenas le mandamos un saludo al corresponsal de madrid arturo se llama también igual que tú en fin pues pues lo dicho muchísimas gracias a todos por estar ahí y nos oímos pronto si jobs quiere y hasta entonces
pues no olvidéis que hay que hacer que jugar con el código ahí está hasta pronto chao chao puedes escuchar más episodios en cuonda.com la comunidad de podcast independientes en español