Retrocompatibilízame

00:00 /2h44

En el episodio de hoy contamos las últimas novedades del lenguaje, como los nuevos requisitos de privacidad que Apple anunció en la WWDC para todas las apps donde hay que dar un manifiesto que informe qué haces en tu app incluso con UserDefaults.

También os contamos qué hemos estado haciendo y en el tema principal hablamos sobre la necesidad de retrocompatibilidad de SwiftUI y los problemas que Apple debería resolver en todos los nuevos frameworks antes de la llegada de las nuevas versiones en (supuestamente) septiembre de este año.

Convierte en un Senior iOS Developer con el Swift Full Stack Bootcamp. Encuentra toda la información aquí: IV Swift Full Stack Bootcamp 2024.

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! Hola y bienvenidos a una nueva entrega de CAFÉ SWIFT. Un café, digamos, de verano, sobre todo en el hemisferio norte, por favor con hielo, porque aquí en Madrid, donde estoy yo y donde también está mi compañero Julio, hace mucho calor, pero bueno, nosotros estamos dentro de nuestras casas lo más frescos que podemos y aunque sea verano, hay una gente que no para porque la verdad que como estamos en

periodo de ventas, pues cada 15 días más o menos hay una novedad que la gente empieza a comentar. Así que, Julio, ¿qué es que no nos dejan descansar esta gente? Básicamente, 35 grados ahora mismo en Madrid, temperatura máxima, pero efectivamente desde Cupertino no nos dejan descansar, bueno, llevan un montón de veranos sin dejarnos descansar y teniendo novedades de manera casi continua. De hecho, la verdad que bien, porque por lo menos tenemos la ocasión de poder reunirnos

y de poder grabar estos programas y después de ver el éxito que tuvimos en el anterior programa que hicimos ese repaso de todo lo que había dado, o lo más importante de lo que había dado la WWDC, pues ahora ya vamos a volver a nuestro formato habitual, que la verdad que como ya sabéis tiene varios bloques y ¿cuál es el primero de los bloques? Pues el primero es que hemos estado haciendo, Julio, y sabemos que ayer has estado en la

King League, pero antes, antes de ayer, ¿qué has estado haciendo? ¿Qué hemos estado haciendo? Pues buena pregunta. A ver, yo ahora mismo estoy todavía dando clase, de hecho por aquí está Dani Def que es alumno, que está todavía, de hecho creo que termino con ellos el miércoles si no recuerdo mal, terminando de ver SwiftUI, la gente de Talento Mobile, a los que saludo a todos los desde aquí, que han estado viendo pues una formación de SwiftUI muy interesante

donde han aprendido pues las bases y el funcionamiento y un montón de truquitos y un montón de cosas y entonces bueno pues es una de las cosas con las que estoy. Luego otra estoy poniendo al día una aplicación de la que ya he hablado por aquí en algunas ocasiones, ¿te acuerdas? La app esta que he comentado de gestión inmobiliaria que está desde un cliente, cliente barra amigo de Portugal, que bueno pues que me encargó esta aplicación

hace ya un tiempo y la hemos ido transformando, haciendo y tal, pues ahora hay una serie de bugs, pequeñas cositas que hay que ir arreglando y además estoy aprovechando para ponerla un poco al día y bueno pues me sirve también de práctica para todo esto y luego por otro lado he estado súper divertido peleándome con Linux, ¿vale? Para echar a andar, para digamos volver a arrancar, ¿vale? Porque se había perdido lo que es el servidor de

la plataforma de educación que estamos en pleno desarrollo, que está ya en fases finales y que bueno pues estábamos, el servidor había tenido un problema con una forma de conexión con la base de datos, luego había problemas con el firewall porque había cambiado la red aquí de casa y entonces pues no lo había adaptado, en fin, varios arreglos que he tenido que ir haciendo, el Jenkins también he tenido que actualizarlo, etcétera, pero bueno ya

está funcionando sin ningún problema. Para que os hagáis una idea, este servidor, bueno el servidor pedazos, el servidor es una Raspberry Pi 4B con 4 gigas de memoria RAM que ocupa básicamente esto, es una placa chiquitísima y ahí tengo montado Ubuntu 22.04, la versión Long-Term Service y bueno pues ahí tengo montado Swift, ¿vale? Tengo montado Swift en este caso actualizado a la 5.8.1 que es la última oficial que tenemos y bueno pues

ahí tengo montado aparte una base de datos PostgreSQL versión 14, tengo montado Redis que es uno de los complementos, lo que es la base de datos instantánea, que es un complemento que necesita la aplicación de Swift para programar crons, para programar works, para programar jobs que se lancen en determinado momento del tiempo y así pues yo puedo programar pues por ejemplo que cada 2-3 minutos pues vaya a los feeds de Cuonda y recoja si hay

algún nuevo podcast publicado. Entonces en el momento en el que hay un nuevo podcast publicado pues manda una notificación a todos los dispositivos que están registrados para recibir estas notificaciones de que hay un nuevo episodio pues en el podcast de aquí de Café Swift o en el de Apple Coding, Apple Coding Daily, Nevekanazer, etcétera, ¿vale? Eso Julio, añades Redis, o sea tú añades Redis digamos como servicio en el servidor

pero luego es Vapor el que llama a ese Redis, ¿no? Exacto, Vapor es el que llama y usa a ese Redis para montar una función de scheduler, ¿vale? Entonces lo que haces que a través del programador tú lo que haces es generar jobs que lo que hacen es programarse, ¿vale? Tú digamos que programas una función, ¿vale? que está dentro del de lo que sería el protocolo Job no sé qué, no recuerdo ahora mismo el

nombre exacto y esa digamos esa clase, ¿vale? que está conformada con ese método tiene un método de arranque, ¿vale? Tiene un método main que es el que va a ejecutarse cuando esa clase que está conformada con JobScheduler creo que era el protocolo en el momento en el que esta clase se ejecuta porque hay un trabajo que la va a ejecutar, ejecuta esta función principal y esa función principal pues luego ya hace lo que tenga que hacer

esa función principal también tiene acceso a todos los recursos de la app, tiene acceso a la base de datos, tiene acceso al sistema de archivos, tiene acceso a cliente web, etcétera, etcétera. Entonces tú desde la configuración del servidor le dices que coja y le diga bueno pues quiero coger y decir que cuando pase por ejemplo pues le dices cada hora en el minuto tal de esa hora quiero que se lance este proceso o cada pues en este caso pues

yo le he puesto por ejemplo cada periódicamente cada cinco minutos me parece o cada tres minutos una cosa así pero le puedes poner diariamente a una hora concreta le puedes poner que cada hora se vaya lanzando insisto a un minuto concreto que se lance cada x minutos en fin puedes tienes varias opciones muy fáciles de programar y entonces cuando expira ese temporizador que lo va llevando a través de Redis pues hace una instancia de ese protocolo

JobScheduler y lanza la función por la cual hace los cambios que tiene que hacer y la verdad pues que está bastante bien y luego pues al final pues está ahí montado con también con Jenkins vale de forma que en el momento en el que yo subo una nueva versión a GitHub él automáticamente detecta que hay una nueva versión se descarga el nuevo código lo compila con el compilador de Swift y reinicia el Supervisor CTL para que el proceso pues cargue la nueva

versión que ha tenido de manera instantánea entonces de esa manera pues tengo un servidor de desarrollo que me permite trabajar de una manera interesante luego eso pues tendré que replicarlo probablemente en las próximas semanas en algún servicio que tenga a través de internet vale que en principio iba a probar un servicio que hay aquí que es español que se llama Cloudyn si no me equivoco que bueno pues que se ve interesante vale entonces bueno pues ahí puedo

montarme una máquina Linux y bueno pues lo puedo meter ahí y bueno pues a ver qué tal qué tal funciona. Todo un mundo esto de las DevOps. Madre mía. La cosa es que hay muchas maneras de hecho yo lo comparo y si acabaste ya Julio justo tengo yo también una historieta de este tipo que a ver porque nosotros o la gente que en principio hace aplicaciones para iPhone vale pues digamos que ya tiene su herramienta su SCOE desde SCOE subes tienes una Store vale pero toda la parte está

de tener tu servidor lo puedes montar de mil maneras que si virtualizando que si Docker que si por ejemplo ahora incluso para la plataforma de Apple tenemos SCOE Cloud vale para la integración continua que es el Jenkins que has estado comentando pero claro en el lado servidor pues anchas castilla puedes utilizar Jenkins pero hay otras 50 soluciones seguramente luego cada plataforma de cloud también puede tener la suya en Amazon tienes la suya puede replicar

las máquinas bueno ahí ahí puedes hacer un poco un poco lo que te dé la gana y a mí es que Jenkins es simplemente un orquestador vale o sea Jenkins lo que hace es detectar que hay una un nuevo un nuevo push en el branch que está supervisado y en cuanto lo detecta descarga todo él hace un pull del repositorio y automáticamente hace una compilación de Swift pero es básicamente lo que hace es ejecutar un shell que yo le he dado vale o sea que al final Jenkins ni entiende de

Swift ni sabe nada. Tiene algunos plugins o tiene ya cosas automatizadas digamos como hablar con git vale con github y tal pero al final te tienes que hacer y una vez me lo hice incluso es que le metí cogía cuando detectaba el push ejecutaba lo que yo le decía que eran comandos de SCOE SCOE build o XC build ya no me acuerdo cuáles son los comandos como si ejecutases lo que hace SCOE por detrás cuando le das al botón de ejecutar pues SCOE build lo hacía yo eligiendo el target

del esquema y todo eso y es que luego ejecutaba un pequeño script que me hice nunca lo adivinarías en Swift vale que preguntaba a la API del App Store si ya estaba procesado el binario vale para luego no sé eso ya no me acuerdo cómo lo hacía creo que con un plugin en el slack de la empresa le notificaba en un canal vale que ya estaba disponible disponible la build pero al final es eso te lo tienes que guisarte un poquito pues eso Jenkins te ayuda porque tiene plugins y como

workflows un poco establecidos pero al final tienes tienes que saber no es no es inmediato si además con Jenkins haciendo SCOE build puedes hacer informes que queden así bonitos con un plugin que hay que lo que hace es reformatear de las salidas de XCODE build para que tengan colorines y luego te saca los informes y tal todo eso lo enseño en la en la academia lo que pasa que es algo que es tan mecánico vale porque al final es conocerse las instrucciones de memoria y

obviamente no te las vas a saber por lo que al final lo que estás haciendo es un guiaburros es pegarte una vez con ello hacerte algo y cada vez que te toque hacerlo repetir normalmente me pasa con eso que cada vez que me toca hacerlo voy otra vez a lo que tenía hecho antes y a veces le meto una cosilla más lo voy mejorando poco a poco en el nuevo proyecto bueno pues yo me he metido en un fregado vale pues me llegó una aplicación que bueno al final por los no era una aplicación

era una aplicación de ellos una aplicación de android y una y un servidor vale pues nada pues la idea era que estaba hecho por una empresa externa y era pues traerlo aquí y ponerme yo al día de eso y bueno pues después de pegarme con cosas como arrancar node.js y dejarlo arrancado luego de repente amazon decidió que la máquina de producción se paraba porque patata vale y claro como yo todavía no tenía controlada la cuenta de amazon osea de AWS pues eso ni me enteré bueno

y nada pues me estuve me estuve poniendo a punto un poco estaba todo un poco desastre pero bueno más o menos ya ya me hice con ello pedí ayuda a un amiguete para la parte del servidor que es la que más me cogea y nada pues ahí está la tecnología digamos en mi poder y hemos hecho dos o tres cambios en la aplicación uno de ellos que puede parecer muy sencillo pero lo que les pasa muchas aplicaciones es que la gente tiene muchas descargas y sobre todo se hacen campañas en redes

vale con google adwords o con con algo parecido pues la gente entra se la descarga pero no sé cuando ven un registro ahí ya hay un poco de fricción y mucha gente la desecha y una cosa tan tonta como es añadirle el login social que en EOS le hemos puesto el login con apple y en android el login con google pues ha aumentado pero un montón no tengo las cifras pero un montonazo de gente que ya se registra pero un montón que también es verdad yo es que yo lo me ha pasado

alguna vez de entrar y si me tengo que registrar me da pereza pero mejor si le doy al login con apple que le dé un botón y aparte luego si no quiero que me dé más la brasa cojo y desactivo login con apple y esa aplicación ya no me va a dar más la brasa pues la verdad es que entro más fácil no sé si te pasa lo mismo julio la verdad es que sí la verdad que cuando yo veo que hay opción de usar sending with apple es que ni me lo pienso la verdad que es una cosa que principalmente

porque por un lado sé que van a proteger mi identidad porque yo no le doy el nombre y ni tampoco le doy el email por otro lado también es algo que me parece muy interesante el hecho de que con sending with apple tienes ese email falso de acuerdo y claro que sucede con ese email falso pues bien sucede que yo estoy o sea para que tengas una idea yo todos los días puedo recibir del orden de 50 a 60 emails más o menos y eso que estamos en verano de esos 50 o 60 emails hay

aproximadamente un 50 a 60 por ciento que son boletines a los que yo no me he suscrito ni he pedido ni quiero que me cuenten ni absolutamente nada qué es lo que sucede que teniendo una cuenta de sending with apple y habiéndote logado con la cuenta de sending with apple simplemente entras en el listado que tienes en apple y dice este fuera este fuera este fuera y a partir de ahí por mucho que te manden boletines que tú nunca has pedido porque de hecho yo me cuido muy mucho de

no marcar la casilla de enviar noticias o anuncios que puedan tener es que no me interesa vale a pesar de todo te lo siguen enviando entonces yo en el momento en el que veo sending with apple me siento mucho más cómodo y le doy y no me lo pienso desde luego pero ya parte y ya voy un paso más allá con nightcloud tienes la cloud plus este que que llaman que te permite generar alias de correo allá donde vayas más allá del sending with apple si a lo mejor tengo 300 a todo lo que me

suscribo me suscribo con uno de estos alias porque porque luego a ver tiene un punto bueno y otro malo vale un punto bueno es que coges cortas el alias y ya está y aunque tú le hayas dicho porque hay empresas que aunque tú le digas que no ellos siguen y siguen o que venden tu dirección a terceros vale que es el problema y luego sigue recibiendo eso bueno yo a mí mi favorito es el el de te das de alta y te mando te empiezo a enviar ya spam a como locos pero cuando pides darte de baja y

tienes que esperarte 72 horas que se dé de baja y lo único que es también por otro lado julio que es la parte mala es que te ata a este proveedor de correo vale porque yo mientras quiera tener todas esas suscripciones o todo eso con esos alias tengo que seguir utilizando mi correo de apple si mi otro correo pues tendría que redirigirlo hacer algún hechizo vale pero no lo vas a hacer porque como yo somos prisioneros del ecosistema el ecosistema te cuida el ecosistema

te protege no te vayas del ecosistema el jardín vallado de apple es que las vallas son muy altas no hay dios que salga de aquí absolutamente y hace mucho frío fuera totalmente pero apple lo hace por tu bien lo hace por ti para cuidarte para que te sientas más seguro y si por el camino por lo que sea se hace la compañía más valorada del mundo pues mejor porque lo hacen muy bien es un efecto efecto secundario no sí sí absolutamente como dice nuestro amigo bilio esclavos del

ecosistema absolutamente en fin y luego también ya lo último estado con tema bueno un tema que es una chapa meter analítica en una aplicación sobre todo es una chapa porque hay que definirlo muy bien vale y tiene mucha parte de entender bien lo que quieren es decir porque un evento no es lo mismo que una imagínate una acción es un evento es quiero mandar a x plataforma google analytics que envío un mensaje en un chat pero cuando lo mando cuando dé al botón para enviar

el mensaje cuando lo mando al servidor cuando el servidor me responde ok hay muchas partes y claro muchas veces hablas con la gente analítica y se te quedan mirando con cara de póker de yo te voy a definir un evento no me líes o por ejemplo en la navegación de pantalla dile a la librería de google que lo mande y ya está y tú no me gustan las librerías y que no es lo mismo ponerlo en el view did low con los eventos de pantallas que en el view did appear porque depende si estás

utilizando push navegación en push imagínate tienes un listado y vas al detalle y depende de lo pongas cuando vuelvas otra vez de un detalle al listado otra vez lo mandas o no vale que eso también también es bastante importante y pues nada pues eso al final mucho mucho hablar de eso de hecho te lo definen no está en este documento ya bueno pero tengo un montón de preguntas señoría sobre sobre ese documento yo tengo hecho una una especie como de para todas estas aplicaciones

tengo hecho como una especie de cola de eventos vale en el que yo le mando cosas a esa cola vale y esa cola las acumula y las va mandando cuando le apetece al muchacho es como una especie de aleatoriedad o algo así que en el momento en el que a él le apetece a través de temas pues los va enviando y los que pueda ir enviando mientras la app está encendida estupendo y los que no pues los enviará los tienen colados y los irá enviando cuando sea y si alguno de ellos por lo que sea

diera error pues se queda y almacenado hasta que lo puede enviar y lo envía de esta manera entonces bueno pues en ese sentido la verdad que se lo recomiendo julio hacer algo así cuando me piden meter algo de analítica no vamos a mandar eventos a google analisis digo pero vamos a enviarlos también a nuestro servidor aunque estén en una tabla y de momento no los utilicemos para nada pero ese mismo evento lo vamos a mandar a nuestro servidor yo es que directamente a ver si el cliente

te viene y te dice no hay que ponerlo en tal no sé qué no le vas a decir que no yo lo de toda manera yo lo intento convencer si no se deja o no eso o automáticamente es que forma parte de su forma de trabajo etcétera bueno pues hay que aceptarlo vale pero pero en el caso de mis proyectos yo jamás utilizo google analytics ni ningún tipo de analytics de nada entonces diréis es que no recoge esa analítica sí por supuesto pero las recojo yo en mi sistema para mi aplicación y

curiosamente si haces eso no hay que poner el diálogo de privacidad el diálogo de permitir a la app que te rastre el diálogo de transparencia de privacidad no hay que ponerlo si los datos te los vas a quedar tú y tienes declarada en tu política de privacidad que estás recopilando estos datos entonces pues no tienes ningún problema porque el problema de la transparencia de privacidad el tener que poner ese diálogo que ese diálogo estadísticamente hablando el 98% de

la gente pulsa que no te rastrea la app vale cosa que nos alegra enorme a mí me da fe en la humanidad sí sí básicamente yo creo que puede haber salida sobre todo ahora que parece ser que no van a invadir los ovnis o que en fin este tipo de cosas entonces aparte de bueno pues que ese diálogo vale de transparencia de privacidad hay que ponerlo cuando los datos analíticos sean cedidos como dice apple

a terceras partes vale hacer parties si tú cedes tus datos a google a facebook a app no sé qué guapan y igual como se llame el servicio que sea ahí tienes que poner el diálogo de transparencia de privacidad porque en realidad estás cediendo los datos de tu app a un servicio de terceros pero claro si tú los montas para ti para ti mismo en tu propia o en tu propio servidor que es lo que yo hago yo no tengo que pedir eso y puedo quedarme y puedo incluso identificar a los usuarios yo

genero un ID único un UUID que generó en un momento determinado cuando la app se arranca la guardo en la cartera de certificados y lo uso como identificador único de esa instalación sin tener que utilizar el ID de publicidad el ID for advertising el IDFA porque lógicamente yo los datos son sólo para mí o sea el problema no son esos datos el problema es que los quieras compartir con terceros y que esos terceros hagan match de ese ID entre distintas apps para que si

tú entras en amazon y buscas yo que sé pues buscas cualquier cosa vale un disco duro pues luego no entras en instagram y te diga oferta de disco duro vale esas cosas vale porque al final pues es un poco donde si aceptamos estos estos cambios si efectivamente al final el identificador de publicidad que es con el lo que hubo todo ese ese problema es eso para identificarte en distintas aplicaciones si tú estás haciendo analítica sólo para tu aplicación pero claro el problema es que

si tú estás utilizando una plataforma estas de terceros te obligan o te dicen no si quieres datos buenos pon ese diálogo para ver si me dicen que si me dicen que ok y luego claro te ponen un montón de excusas y luego los datos no no cuadran mucho y le dices algo decir ah es que claro la gente no no está aceptando esto si no de hecho ahí yo he visto a pesar de que creo que está prohibido por apple poner algún tipo de de a ver lo que creo está prohibido por apple si efectivamente está

prohibido por apple el que obligues vale es decir que si quieres tener tal funcionalidad dale al botón de que sí vale eso está prohibido por apple pero que no está prohibido es el ipad yo miraba y por favor para mis niños que tienen que comer tal noche que el pedirle no que el entonces eso sí se puede hacer vale el llorarle al usuario eso sí se puede hacer pero porque al final volvemos a repetir lo mismo no no son datos para ti que sí que tú vas a recibir un beneficio porque las

analíticas de una aplicación son algo imprescindible porque no hay nada más útil para ningún desarrollador a nivel de usabilidad de sus apps que saber quién como cuándo y de qué manera se está usando una app si tú tienes 20 opciones distintas es importante saber cuánto tiempo pasa tu usuario en cada una de esas opciones o cuáles son las que más usa o cuánto tiempo está usando tu aplicación etcétera etcétera entonces eso es muy importante a todos los niveles como desarrollador

para saber qué partes de tu app pueden ser mejorables qué partes no qué partes tienen más éxito qué partes no si hay algún tipo de problema de usabilidad o de experiencia de usuario que impida que el usuario llegue a alguna parte determinada en fin todo eso es desde luego muy muy importante pero todo eso lo puedes hacer con tu propio servidor gestionando tus propios datos y sin darle de comer a los monstruos de meta de google de microsoft o cualquier otro que va pues

es que apple lo define perfectamente en el vídeo de transparencia de privacidad de apps porque son brokers de datos es que es eso entonces no perdona yo broker de datos para que si busco algo en algún lado o si he buscado para irme de viaje a yo que sé adónde y de pronto te empiezan a aparecer viajes por todos lados o te empiecen lo siento pero yo no quiero porque además está totalmente direccionado

mira yo todo el mundo sabe y no cuento ninguna cosa que nadie conozca que yo a nivel no político pero sí económico soy liberal vale yo tiendo a una figura de economía liberal vale y de hecho sigo al gran profesor juan rayo vale entonces con amor rayo qué pasa que yo pues cuando estoy en tiktok pues obviamente me quedo viendo vídeos que hablan de economía liberal de teorías del liberalismo de tal de no sé qué porque bueno me interesa me parece interesante vale qué es lo que

sucede pues que al final el sesgo que estas redes tienen de lo que nos gusta es brutal porque al final yo cuando enciendo tiktok tengo tres temas que se repiten de manera recurrente que son humor vale me pone monólogos del club de la comedia y tal y cual porque yo cada vez que sale goyo cada vez que sale algún monólogo de estos del club de la comedia o incluso también al en fin varios humoristas vale que tal luego tengo la parte de economía liberal vale que me sale marvidal me

sale cuando monrayo me salen pues todas esta gente vale y luego tengo la tercera parte que es los animes entonces me sale gente reaccionando episodios de anime noticias de anime tal y cual dices hostia y claro eso al final ellos lo pueden vender y si tú sabes que una persona está viendo por ejemplo contenido de anime viendo noticias viendo reacciones a episodios se está quedando en las reacciones por ejemplo a los episodios de demon slayer de kimetsu no ya iba pues entonces

es que le gusta esa serie o sea pues ya tienes ahí un dato muy importante para ir a venderle a esa persona exactamente eso y a lo mejor pues te puede conseguir vender pues eso yo que sé pues qué me están saliendo ahora pues ahora me están saliendo gente que vende cuadros de kimetsu no ya iba o gente que está haciendo fondos de pantalla premium descarga de los cosas así pues claro es que hostia a lo tonto a lo tonto y luego pues de economía liberal tres cuartas de

lo mismo a mí no me va a saber o sea por poner insisto no es cuestión de posicionamiento vale pero en el momento en el que como tú tienes un sesgo muy concreto político de pronto te sale otro totalmente distinto pues sólo te sale de ese otro cuando se meten con él pero no te sale la información del otro y si a lo mejor a ti te interesa saber algo de la información del otro no te la ponen sólo te ponen al que critica el otro lado por lo tanto claro yo uso el cerebro

en ocasiones vale y por lo tanto filtro y me doy cuenta de esa manipulación pero hostia es que puede haber gente que realmente quede cegada por su propio sesgo y piense que el mundo es como él lo está viendo en redes sociales y no señores ni de coña las redes sociales están enfocadas en lo que tú ves y están creando un mundo que es sólo para ti y eso es de un peligro brutal porque no te deja ver todo el mundo en realidad si a ver apple está poniendo algunas

medidas para ello pero y otra cosa que a mí me ha hecho gracia yo me encontré con gente de marketing o todos afortunadamente que cuando le entras en el app store conect y les enseña la parte analítica que hay alucinan dices ah yo no sabía ni que esto existía vale pero yo animaría a apple a que si realmente quiere te pongo el ejemplo de alguien que tiene una aplicación que sólo es de iphone que tiene muy poquito dinero que no que la aplicación no tiene servidor vale

lo hace todo la aplicación con iCloud o con lo que con lo que sea joder necesita recurrir a una de estas plataformas de terceros joder ponme un framework para mandar eventos que luego pueda haber en app store conect o ponme un framework que me registre las visualizaciones de las pantallas algo sencillito y sobre todo en el paraguas de que no sé si de hecho no sé si sale con cada versión mayor del sistema pero hay un sitio en el que tú puedes o no compartir con los desarrolladores

vale porque una de las cosas que me dice esta gente de marketing es que me dice ya claro pero aquí si cuando configuras el teléfono le das a no compartir información con los desarrolladores no te salen esos datos vale pero te sale el porcentaje de gente que ha aceptado con lo cual puedes más o menos extra si tienes una aplicación de cierta de cierto calado puedes ver más o menos si puedes extrapolar en números grandes lo que lo que tienes pues yo creo que le está haciendo cosas a ese

respecto pero a mí me gustaría que siempre fuese un paso más allá sobre todo para estos casos de gente que recurre a google analytics por poner un sitio porque no tiene más remedio y porque hay gente que tú le hablas con él tiene una aplicación y sólo sabe que existe eso no sabe que existe otras maneras o no sabe que se lo puede que jorge si tienes un backend pues mándatelo al servidor tú no necesitas esto porque además lo de tu servidor lo puedes cruzar con los datos de usuarios que

tienes y demás que es lo más fiable o sea yo cuando voy a sacar cuando me piden sacar un numerito lo primero que digo vamos a la base de datos y vamos a ver si en la base de datos lo tenemos luego ya empezamos a vamos a google analytics y miramos a ver si coincide que un millón seiscientas mil aplicaciones dicen lo contrario a lo que tú estás diciendo que son las apps que estadísticamente en el último conteo que vi hace unos meses están usando a día de hoy

firebase a bueno espera que hay otra es que juegue me tiras de la lengua julio hay gente te provoco te provoco o sea hay gente de backend que no sabe que tú puedes mandar directo las push de apple las puedes mandar a apple lleva cinco años en la que ha hecho tres o cuatro ha trabajado en tres o cuatro vacantes que siempre utilizaban firebase y firebase digamos que te te dice mira yo te doy aquí un sitio al que mando notificaciones y ya me ocupo yo de mandárselas

ahí o sea android como corresponda a que sí sí que piensan que sólo funcionan las push con firebase claro que dice ah pero no utilizáis pero para mandar notificaciones no utilizas firebase y cómo lo haces entonces pues nativamente gritando por la ventana y nos abrimos la ventana tinku tinku me envió un punto de ficción madre mía bueno pero es que como esa también sabes que hay muchísima gente

que no conoce el crash analytics de scope yo he tenido muchos alumnos a los que claro cuando me dicen bueno y entonces cómo capturas los crash de la aplicación y los tal y le digo mira pim pum te salen por versión y cuando lo ven ven que te sale efectivamente por versión que te sale como si el error te hubiera dado el local en scope que le pincha y puede reproducir el volcado de memoria tal se quedan flipando diciendo pero y esto es creo que ahora desde cuando está esto en en scope 15 creo

que te graba incluso un vídeo un vídeo y tiene no me acuerdo me vio el vídeo y hace un mes y tiene más la verdad es que ha mejorado en ese punto bueno y los log ya ni te cuento de hecho he tenido hemos tenido que meter logs en una en una aplicación y claro cuando he dicho yo no dado con crashlytics o no no no no el logger de ios pero es que ya y cómo los ves el logger de ios tiene una API para que el usuario le digas descargar los de bluetooth porque los puedes

poner por categorías y te genera un fichero que te manda al usuario con privacidad porque además puedes decir que los ids se ofusquen cuando los mandes que los puedas ver en el dispositivo o en la consola de scope pero que cuando los mandes en ese log luego aparte que ciertos logs te los persiste en disco ciertos logs sólo en memoria te libera él o sea que te lo da todo hecho vale pues eso pues la gente no sabe que no sabe que eso existe y como te digo sea podéis vale por si

alguno no lo conoce con scope podéis en scope crashes replicar el error que le ha dado a un usuario en zimbabue como si te hubiera dado a ti en local es que le das y te lleva la línea de código es que efectivamente es que le das y te da y te va a la línea de código y ves el volcado de memoria incluso es compartir con los desarrolladores cuando tú le das a compartir con los desarrolladores los informes de errores es eso lo que está aceptando el usuario y en test

fly es automático vale siempre tú cuando estás probando lo de test fly aceptas con test fly que eso siempre es exacto aunque tú lo tengas aunque tú lo tengas activado tu teléfono y le puedes mandar feedback puedes mandarle una captura diciéndole pues me ha pasado esto en este momento claro si tú si tú desde una aplicación que estás probando en test fly como usuario haces una captura de pantalla automáticamente el sistema detecta la captura de pantalla y lo añade como un informe de

incidencia que se envía al desarrollador tal cual y como ha comentado antes arturo si la app se cuelga te envía un vídeo de los últimos 10 segundos de lo que ha hecho el usuario antes de que el app se cuelgue o sea cosa que los que no se desarrolladores es fundamental porque es lo de siempre te llega una incidencia que has tocado yo estaba aquí pero hiciste esto y esto esto antes no no no yo no le

he dado así tengo un virus de un virus de un virus no sé por qué me va el teléfono debo tener un virus debo tener un virus yo creo que entré en una página en una página que se llama x y que tú ríete pero pronto va a haber que entrar por x.com que tiene comprado el dominio y ahora mismo lo tiene aparcado pero en twitter dentro de poco en vez de entrar en twitter.com vamos a entrar en x.com y eso va a ser unas risas no el historial claro si no no cariño está mirando

redes sociales ya ya redes sociales redes sociales de que de que demasiado sociales esas demasiado en fin cosas curiosas vale pues pasamos a las noticias entonces si te parece perfecto y porque bueno pasamos a las noticias pasamos a la noticia y la noticia básicamente pues es lo que hemos comentado antes el listado de las apis que requieren permisos a partir de la próxima versión es decir a partir de otoño dicho esto es directamente de la página web de apple desde

otoño de 2023 recibirás una email por parte de apple si subes una app al app store connect que use cualquiera de las apis que están listadas en lo que vamos a comentar ahora sin una descripción de la razón dentro del manifiesto de privacidad de la propia aplicación qué significa esto arturo explícaselo a la gente qué significa esto de los mensajes de privacidad vale ahora tienes que hacer el manifiesto que ha dicho julio tienes que rellenar el manifiesto que es un poco coñazo no

nos vamos a quitar a la venda de los ojos vamos a quitar la venda de los ojos y vamos a hablar de las cosas también un poco entre comillas malas porque yo creo que se puede no es malo el que lo haya sino creo que podrían agilizarlo un poco podrían automatizarlo un poquito más porque sí que es un poquito la encuesta de privacidad es un poquito tal y pero bueno como entendemos su función pues aceptamos barco pues debido a que y fundamentalmente para luchar contra lo que llaman

el finger printing vale que es como a lo mejor tenemos el id este del que hablamos que mira viene una corrección el id este nos identifica entre aplicaciones es decir si dos aplicaciones utilizan un la librería de google o de facebook vale pues ellos pueden saber que tú tienes esas dos aplicaciones y que tú eres tú en esas dos aplicaciones vale porque tienen el mismo id que es el mismo para las dos aplicaciones porque está de alguna manera repartido a todo el sistema

efectivamente entonces como la gente le da que no el 98% de la gente le da que no pues se hace el finger print que no es otra cosa que solicitar cosas de tu sistema especiales de tu sistema que te identifican vale es como tu huella vale buscar una huella en tu dispositivo que no es un id único sino una serie de parámetros que tiene tu dispositivo y que no es el tiempo sea no tiene un 100% de efectividad pero la mayoría de las veces acierta y qué parámetros son estos o yo

que se puede ser el lenguaje de tu dispositivo la localización por supuesto en la zona donde estás también se suele utilizar el navegador que utilizas un montón de parámetros que solo ellos solos todos utilizamos safari o sea mucha gente utiliza safari pero que utilice safari y que tenga un iphone 14 en la versión x de ios y demás no todo el mundo lo tiene vale entonces para evitar esto lo que ha hecho apple es incluir una serie de apis que acceden a esos datos entre las que si

detecta que tú las te está utilizando te pide que las declares en este manifiesto pero no sólo tú que eso también lo hemos dicho antes si algún framework de terceros que estés ejecutando que al final es código ejecutado vale tú importa la librería pero esos códigos que hay dentro de esa librería que está ejecutando y apple detecta que ahí también se está utilizando también te va a pedir rellenar el manifiesto y esto julio aquí voy a hacer un inciso porque hay un vídeo que

tengo pendiente de ver de la wdc que dice que cuando distribuyes una librería está la opción de añadir ya este manifiesto para que los usuarios de esa librería o las aplicaciones que hagan usar esa librería ya tengan este manifiesto digamos en claro vale que no tengan que hacerlo ellos sino que ya les dices pues utilizo este permiso este permiso y este permiso vale que eso yo creo que viene bien y es uno de los mecanismos que apple puede hacer para aligerar es decir yo utilizo x

librería y claro yo a lo mejor no me doy cuenta relleno ese manifiesto mal pero porque no me estoy dando cuenta que esa librería coge x datos vale pero si esa librería ya me la dan con su manifiesto al lado diciéndome recojo esto y esto pues mira pues algo que me quito pues sí y de hecho según los dice apple ya no solo es que desde otoño nos van a enviar una notificación de lo que tenemos que modificar sino que desde primavera de 2024 las apps que no describan el uso de las apis a

través de este fichero de razones en el manifiesto de privacidad de la aplicación no serán aceptadas en el app store conect así tal cual así si pánina sin pánina efectivamente porque a partir de primavera del año 2024 pues bien para el que no lo sepa apple obliga todos los años a que en primavera de ese año sea de obligado uso para subir aplicaciones a el app store la última versión de scope que lanzó en otoño del año anterior a dicha primavera quiere decir que desde el 30 de

abril que fue la fecha elegida por apple porque cada año va cambiando este año ha tocado el 30 de abril desde el 30 de abril todo el que quiere subir una app o una actualización de su app al app store tiene que hacerlo usando xcode 14 no puede usar otra versión distinta y tiene que incluir el kit de desarrollo de como mínimo ios 16.1 quiere eso decir que todas las aplicaciones van a funcionar solo desde ios 16.1 no obviamente no pero en la sdk si tiene que estar incluida

explicado de una forma muy rápida una cosa es la versión de la sdk que este tipo de obligaciones también están en android google llegado a una determinada fecha obliga a que todo el mundo tenga el lo que es el kit de desarrollo base en una versión concreta android 10 android 11 android 12 quiere eso decir que hay que soportar estas versiones repito no quiere decir que cuando yo voy a usar el kit de desarrollo de ios 16.1 yo puedo fijar el target de mi aplicación para que

funcione por ejemplo desde ios 15 o desde ios 13 o desde ios 12 lo que yo quiera en xcode 14 la versión mínima que puede elegirse es ios 11 por lo que a partir de abril del año a partir de abril de este año ya no se podrán ya no se pueden subir aplicaciones que soporten ios 10 que ya era hora entonces estoy convencido que la sabía de hecho tengo alumnos que me han contado que debido a esto han tenido la ocasión de pedir la subida de versión a la versión 11 que era como ya me he flipado

o sea ese es el nivel entonces qué sucede que si yo le pongo como versión mínima a un sistema la versión 12 por ejemplo porque quiero soportar los iphone 6 plus etcétera es bastante simple sólo tengo que poner el target quiere eso decir que voy a compilar con esa versión del sistema no quiere decir que el kit de desarrollo de ios 16.1 está preparado para usar las instrucciones que sólo funcionan vale es decir el kit de desarrollo sabe perfectamente qué instrucciones que comandos

qué variables qué constantes qué elementos del propio kit funcionan en cada versión entonces si tú le dices que quieres hacer una aplicación a partir de la 12 pero usas algo que está a partir de la 13 el sistema te va a dar un error de compilación y te va a decir no no no chaval esto no funciona en la 12 esto funciona a partir de la 13 por lo que tienes que poner una serie de comandos de arroba valuable o de if available o en fin varias formas que tenemos para decirle que

esta parte del código sólo la incluyas cuando la versión del usuario esté a partir de la versión 13 por ejemplo vale entonces de esta manera lo que hace el sistema es usar la librería de desarrollo de la última versión para así tener todos los parches de seguridad mejoras mejoras de memoria de usabilidad de rendimiento etcétera etcétera pero esa propia sdk se restringe para no permitir usar ciertas instrucciones que en el kit de desarrollo que tienen en este caso por ejemplo

un iphone 6 con ios 12 esas instrucciones no están en esa versión de esa sdk que está incluido dentro del sistema operativo y que forma parte de los componentes del propio sistema operativo entonces como esa versión no tiene esa llamada o no tiene esa función o no tiene esa clase si la llamaras dinámicamente como el binario no encontraría match la app reventaría entonces el sistema cuando tú desarrollas te ayuda a que no cometas este error vale pero tienes que poner esta última versión

entonces en primavera de 2024 apple obligará a todo el mundo a que tenga que subir la aplicación que tenga que subir las aplicaciones con scope 15 entonces es code 15 es el que va a tener esta obligación del manifiesto de privacidad y que haya que pedir permiso al usuario cuando vayas a usar por ejemplo user defaults y ahí es donde ha saltado la polémica porque lo vamos a dejar para el final porque bueno primero hay algunas APIs pues del manejo de ficheros casi digamos a bajo

nivel vale casi funciones de hecho algunas en c que va a detectar que estamos llamando luego también por ejemplo a la hora que se ha encendido el equipo el espacio disponible en disco vale cosas que miran en el sistema de ficheros que pueden hacer que saquen parámetros que te que te identifiquen luego también algo de a de los que de los teclados que tenéis activados vales en los teclados que tengas instalados y ya llegamos a la última parte que es la que

comenta julio que es yo creo donde ha saltado la chispa exacto porque son no son otros que nuestros queridos y bueno es que no me atrevo a decir una cifra que el 99 99 por ciento utilizan esta API y no es otra cosa que el user defaults que para los no iniciados pues digamos que es una manera de guardar permanentemente pequeñas configuraciones aunque luego hay gente que lo hace o sea de hecho yo lo he visto utilizar hasta para para cachear respuestas de servicios enteras

o sea para mostrar primero primero esto mientras estoy cambio que se tengo un listado de la compra vale pues cuando abro la aplicación pido al servidor que me dé el listado actual pero como primera opción le muestro lo que tenía vale y guardado en user default vale pero bueno es otro tema pero claro aquí se guardan un montón de cosas y el 99,9% lo guarda aquí incluso keys incluso password la gente guarda que habría que darles de que darles de collejas y pues cuando

ha saltado esto esta noticia pues la gente no sé hay gente que decía que por un lado que que le parecía un poco complicado que es que al final todas las aplicaciones van a tener que incluir esto y por otro la gente decía que el problema es que no sea malas las user defaults sino que se utilizan mal y qué significa esto que tú aunque las utilices bien vas a tener que declararlas y pues no sé porque como va a ser en mi opinión ya estoy dando mi opinión como va a ser el 99% de

las aplicaciones creo que los usuarios van a pasar o sea van a ver esto a lo mejor se informan pero como todas las aplicaciones lo van a tener tu aplicación por pedirles este permiso o bueno o por tener esto en el manifiesto que también os digo que no se lo leen y dios vale se lo leía cuando salió la noticia la gente geek pero no lo debe leer ni de los manifiestos pero claro esto te puede hacer estar en desventaja con una aplicación que no lo use vale y si tú lo estás

utilizando bien qué necesidad tengo yo de declarar que estoy utilizando esta API si la estoy declarando bien no sé qué opinión tienes tú julio a ver es que aquí el problema es como tú bien dices el objetivo el objetivo de user defaults es eso son opciones por defecto para el usuario lo único que se tiene que grabar ahí es tener eso que son datos que definan la experiencia del usuario pero que sean datos totalmente inocuos por ejemplo la selección de que quiero un modo oscuro un modo

claro independiente de la selección del sistema en la tipografía tengo varias para elegir y elijo una el idioma en el que está la app si puedes cambiarlo sin usar el idioma en el que tienes la propia el propio sistema cositas que son tontas cositas que bueno pues pequeñas por ejemplo yo en el caso de la aplicación está de gestión inmobiliaria pues en user defaults grabo las opciones que ha elegido un usuario dentro de las preferencias del usuario si quiere o no las fichas

de los de las casas o de lo que tenga de los assets inmobiliarios y las quiere las fichas en formato pequeño o grande si quiere ver el resumen de los datos económicos en la pantalla principal o no todo ese tipo de cosas si quiere ver una foto del asset o quiere ver simplemente colores planos eso son opciones de user defaults ahí es donde hay que grabarlos pero en el momento en el que tú te dedicas a grabarlo todo y entonces alguno preguntará y por qué no se usa el keychain

pues muy simple porque o no saben que existe o no saben usarlo o todo junto yo te iba a decir que habrá algún garrulo que guarde esta información en la información de que le sirve para hacer este fingerprint esta huella en el keychain claro por eso yo creo que yo creo que ese es el motivo por el que apple ha metido esto aquí vale porque más de un garrulo habrá grabado la información de este fingerprinting en user defaults entonces han dicho no no no pues ahora te impedimos que

grabes ahí nada o que el usuario elija o que lo tengas que poner vale eso es decir es como una forma de forzarte para que no uses esto es que además el user default otra cosa que tiene es que puedes crear un grupo de apps vale y compartir este este es user default leerlos tanto por ejemplo de otros targets si tienes un widget vale pues un user default es una forma de comunicar datos siempre que sean cosas como dice julio de configuración y cosas no se datos no sensibles

es una manera de comunicar un widget con la aplicación principal vale o si una empresa tiene tres aplicaciones vale pues puede hacer este app group y saber que en una que en una aplicación y digamos leer los datos de la otra pero seguramente que también hay algunas aplicaciones que hacen un uso un mal uso de ello y se pasan información que no deberían entre distintas aplicaciones o distintos targets a través de este mecanismo de esta api y alguno dirá y hombre pero

quién va a hacer eso nombre no esto la gente no lo hace la gente cómo va a usar esto de esta manera vale uno de los primeros grandes escándalos de seguridad que hubo en españa recién salida a la app store pocos años poco tiempo después fue la app de un gran banco uno de los más grandes bancos que hay en españa que guardaba el token de entrada a su servicio de banca en internet en user default

es que te voy a decir el 80% de las aplicaciones que me he encontrado lo hacen es que es lo triste ese es el problema entonces pues en fin aunque yo sinceramente le agradecería a apel que hiciera algún tipo de de api sencillita para el tema del kitchen que si es que ha hecho la culpa 50 y diría 50 50 a los desarrolladores garrulos pero es que otros 50 es de apel de que es algo que viene de dicho de objetice que tiene una horrible pero horrible que bueno pues es lo de siempre pues

yo ya me he hecho un grapher que reutilizo y cada vez que lo reutilizo el método una cosilla nueva y me lo voy compartiendo pero siempre mejor a mí mismo que voy a hacer en un paquete de en un paquete de switch pero siempre me da pereza y cojo el fichero y lo copio cada proyecto pero bueno eso es otro otro tema pero para que la gente se haga una idea la api del kitchen es una api en c que usa tipos de c que usa diccionarios de c vale cf diccionario que es un c

foundation diccionario y que funciona en base a crear queries en un diccionario enviarlas a una api y que esa api devuelva lo que sea sin un control de errores buenos y no es algo del cretácico inferior pues ya se podían haber currado algo aunque sea con macros digo yo aunque sea un grapher como el que nos hacemos todos exacto pero un poco que lo puedes hacer más chulo o menos chulo no sé pero desde luego si es cierto que yo culpo en parte a apel de esto vale porque es que

no se entran los sudores vale y de hecho cuando veo a alguien usar una librería de terceros de el kitchen puedo llegar a comprender que lo haga luego lógicamente le voy a enseñar cómo funciona o le voy a ayudar a que él lo construya para que no dependa de otros vale pero independientemente puedo llegar a entenderlo entonces bueno pues esto sería un poco la la noticia no que queríamos dar hoy de bueno pues lo curioso no que ha sido este este evento no está esta cosita esta noticia

no de alguna manera así que bueno pues pasamos un poco no a un poco repaso o digamos conjunto general vale de lo que sería nuestro bloque principal del podcast que básicamente lo que vamos a hablar un poco es de pues como una continuación no de lo que ha pasado con la wwdc en cuanto a novedades no que han aparecido en estos días y también pues una pregunta interesante que nos surge siempre que hay una nueva versión de su UI no que es la que nos

hemos planteado aquí de si realmente es o no necesario conocer UIKit para empezar a desarrollar así que entremos con ello. ¿Alguna vez has soñado con convertirte en un desarrollador IOS creando aplicaciones que millones de personas podrían usar todos los días? ¿Te has sentido abrumado por la complejidad y la exigencia del mundo del desarrollo Apple? En Apple Coding Academy entendemos tus inquietudes y tenemos la solución para ti.

Sabemos que convertirse en un desarrollador de IOS no es un camino fácil ni rápido, requiere dedicación, esfuerzo y una formación de calidad pero no te preocupes estamos aquí para ayudarte a recorrer ese camino hacia la excelencia. Presentamos el Swift Developer Program 2023, un programa de formación que te enseñará a crear código nativo de calidad para entornos Apple abriendo las puertas del App Store para tus proyectos.

Aprenderás desde lo más básico hasta lo más complejo con una formación basada en trabajo y experiencia real. Te guiaremos paso a paso con prácticas y ejercicios de todos los niveles para asentar tus conocimientos y no solo eso también tendrás la oportunidad de crear un proyecto real como el que publicarías en el App Store con el seguimiento de nuestros expertos formadores con años de experiencia en el mercado.

Este programa incluye formación en Swift, SwiftUI y una introducción a Vision OS, el sistema operativo del nuevo Apple Vision Pro. Así estarás preparado para enfrentarte a los desafíos actuales y futuros del desarrollo de aplicaciones. ¿Estás listo para iniciar tu camino como developer? El Swift Developer Program 2023 comienza el 2 de octubre y se extiende hasta el 30 de noviembre.

Tendrás clases de lunes a jueves de 7 de la tarde a 11 de la noche hora española, un horario perfecto tanto para gente de Europa como de Latinoamérica. Y recuerda que tienes hasta el 31 de enero de 2024 para entregar tu proyecto final, así que si te apuntas, ponte las pilas. Tenemos solo 40 plazas exclusivas para garantizar la calidad de la formación.

Visita nuestra web a coding.academy barra sdp23 y ahí tendrás toda la información y contacto con nosotros para resolver cualquier duda. Reserva tu plaza hoy y da el primer paso para convertirte en un exitoso desarrollador de entornos Apple, con Apple Coding Academy. Y recuerda, be native. Pues Julio, la verdad es que tenemos así varias cosas no sé cuál te produce más curiosidad o cuál es más importante porque yo no lo pues yo creo que podemos comentar el tema de tip kit que yo creo que puede ser una cosa

que define bastante nosotros al final el anterior programa si lo habéis escuchado si no pues ya sabéis que podéis escuchar lo que es un repaso de todo lo que Apple dio en la WWDC. Una de las cosas que dijimos es que estaba todo un poquito verde y uno de los motivos para que estuviera verde era precisamente tip kit.

Cuéntanos qué es tip kit y qué ha pasado con él. Pues tip kit fue anunciado yo creo que incluso no en la principal sino en el State Platform de Junior y no es otra cosa que un framework una librería que nos permite de hecho compatible tanto con UIKit como con SwiftUI que nos permite dar tips o consejos de uso en nuestra aplicación. Pongo un ejemplo donde Apple lo ha utilizado y yo creo que esto estaba entre bambalinas ya desde hace dos o tres sistemas operativos porque la interfaz es muy parecida a lo que tenía.

Lo que hacen es presentar distintos tooltips saliendo de un botón diciéndote pues en este botón puedes marcar como favorito algo luego también hay otra opción de ponerlo como una vista normal pero te aparece como una vista pues con el borde redondeado te permite un título que es más destacado te permite cambiar la fuente vale es súper súper personalizable además basado en protocolos vale digamos que cada tip es un protocolo en el que tú tienes que rellenar el título el cuerpo el icono y las

acciones vale porque también puedes hacer llamadas a la acción que te lleven a algún sitio en concreto como digo es muchas veces os lo encontráis o yo creo que también hay algo parecido en las aplicaciones de numbers y demás no es la pantallita esta que ojalá saquen algo porque me gusta mogollón de las novedades que cuando entras en alguna aplicación te aparecen como un listado de novedades vale sino que es cuando ya estás en la propia aplicación digamos que salen de botones

pues acciones con novedades vale que puedes que puedes hacer a mí me gustó mucho porque he sufrido y me he pegado muchas veces haciendo estas cosas por mí mismo y bueno sobre todo la interfaz está de la flechita no es muy sencilla de hacer vale y sobre bueno iba a decir sobre todo yo aquí pero es que en su UI tampoco es que sea mucho más fácil de hacer montar un shape y hacer claro tienes que ir como calculando la fecha dibujar aquí pero bueno pero no es efectivamente

no es algo sencillo y salió y yo lo primero que cuando salieron las vetas y fui corriendo a ver este tip kit y qué pasó y qué pasó en un pozo que no está como como decía el meme qué pasó no dime qué pasó pues lo mismo y no ha sido hasta esta versión la cuarta beta creo que ha aparecido vale no ha aparecido al 100 bueno ha aparecido al 100% pero hay cosas que no funciona vale porque ya han salido algunos artículos de gente que es que también es que tienen que pulir estas cosas

en verano julio la gente que recogerse vacaciones también es que no tengo yo muy claro que en verano apel deje a mucha gente de vacaciones es que es raro la manera en la que tiene o sea las fechas en la que tiene presentación deja el verano un poco complicado para marcharse porque es donde más porque están precisamente están puliendo las vetas pero bueno ha aparecido esta vez toolkit o sea tool tip ya tengo que todo el mundo ha empezado a hablar de ello o sea de hecho ha sido como la

esto y la noticia que hemos dado ha sido como la conversación de esta de esta última beta porque siempre cada vez que sale una beta a la gente corriendo a hablar de un tema y muy buena pinta yo aparte me vi el vídeo en su día pero ya me he puesto a no tengo tiempo de cacharrearlo pero ya he visto me he leído ya me he leído tres o cuatro artículos sobre sobre el tema y muy buena pinta la parte visual me parece muy clara ya digo es como hacer un protocolo una vista que se conforme

o un view un view controller creo que es que se conforma un protocolo y eso le das el aspecto la fuente le puedes cambiar y todo y las acciones y la subiera y luego tiene la parte de cuando lo muestro vale que ahí ya no sé me lo tengo que mirar con tranquilidad porque la lógica creo que tiene muchas opciones de incluso se sincroniza con iCloud vale para que si el usuario tiene la aplicación la misma aplicación en dos dispositivos si le has enseñado con que hace un botón en una

no se lo enseñes en la otra vale luego también tiene para reducir y que sólo se enseñe una vez al día la verdad es que es bastante flexible pero a mí la API me ha parecido un poco confusa pero seguramente sea sea cuestión de revisarlo y no sé para mí es una muy buena o sea una de esas cosas que Apple hace hace bien y parece que contenta a todo el mundo sí sobre todo si esta API estuviera disponible de forma retrocompatible ya es que a ver y esto sí que

es la puñetera verdad esto es un framework que podría haber existido hace tres versiones no creo que tenga ninguna llamada de bajo nivel ni de nada que haya sea obligatorio a esto entonces no sé qué hacen que no utilizan ese maravilloso modificador de hacer retrocompatible vale porque es ya de aparte yo creo que es un framework aparte es un framework aparte si quiero decir no es que vale es que no lo tengo yo importó UIKit o sea UIKit o SwiftUI y claro importó la versión de

SwiftUI y si importas una de un sistema anterior que no lo tiene no no no es que es un framework aparte pero es que es igual que charts SwiftCharts es un framework aparte que tienes que importar entonces yo ahí no lo veo vale a ver yo entiendo que Apple no quiera poner frameworks nuevos en los ejecutables y que quiera que todo se ejecute directamente desde frameworks que existan en el sistema lo entiendo perfectamente pero también es cierto

que hay casos y casos y que dado el porcentaje de el porcentaje de gente que se va instalando las nuevas versiones que al final cuando llega primavera del año siguiente ya estamos en un 80% del total de usuarios con la última versión de IOS no como en Android pues hombre yo creo que podrían plantearse que realmente las apps para aquellos que no se actualicen pesen más y si pesan más te aguantas sino decir lo siento vale tienes que pagar el precio de no actualizarte

porque no puedas o porque no quieras pero por lo menos no tienes a yo creo no lo sé corrígeme si me equivoco yo creo que los usuarios preferirían pagar el precio de tener unas apps que ocupen más espacio pero poder usar apps que usen cosas más modernas a ver también los que no se actualizan precisamente eso porque por algo una razón muy muy puntual y eso es muy poca gente o porque es gente que no le interesa tampoco tener su moderno pero sabes cuál es el problema aquí julio que

apple saca IOS 17 y la aplicación de mensajes y de fotos de IOS 16 se la pela porque ellos ya están trabajando en las de IOS 17.1 17.2 entonces ese problema que tienes tú que tienes una aplicación que tiene que soportar IOS 15 y le quieres meter algo de IOS 17 nuevo lo tienes tú apple no tiene ese problema porque las aplicaciones del sistema de apple vienen bueno creo que hay algunas que no las del app store y demás pero las principales si vienen con el

sistema vienen con el sistema y cuando sale un nuevo sistema en la anterior a apple se lava las manos completamente y le puede meter todas las últimas apis le puede meter suite data le puede meter tipkit y las diez de últimas que le da igual entonces yo creo que como cuando decíamos que los desarrolladores de apple han empezado a utilizar los scope las versiones de scope que estaban sacando vale pues esto es igual apple ya es que no tiene ese problema de retrocompatibilidad

de sus apps pero si tiene el problema de la retrocompatibilidad en cuanto a lo que es que la gente utilice o no SwiftUI y aquí hilamos vale porque claro tú al final dices puedes empezar a trabajar solo con SwiftUI puedes empezar a trabajar solo con SwiftUI pero ahora puedes trabajar con UIKit de una forma más cómoda cómoda en cuanto a retrocompatibilidad que con SwiftUI desde luego porque pues porque UIKit dio su último gran salto en iOS 13 y desde entonces ha tenido pequeñas

cositas que se le han ido incluyendo pero no grandes cositas a muy grandes rasgos todo lo que tú hagas en UIKit en iOS 13 o en adelante va a funcionar sin ningún problema es decir va a ser muy raro que usando UIKit para iOS 17 tengas algo que no puedas incluir desde iOS 13 incluso si eres porque esto es otra cosa que ya va en contra esto ya es algo que a mí me parece mal vale porque hay mucha gente que sigue bueno lo hemos comentado alguna vez te sorprenderías la enorme cantidad

de alumnos que no conocen y lo hemos comentado alguna vez las fuentes de datos difusas no tienen ni idea o sea yo he tenido alumnos que al enseñarle esto han dicho pero qué magia es esta pero esto desde cuando se utiliza y cuando les dices cuál es la versión mínima en la que está te dicen pero visto porque no lo usa nadie pero si esto es mucho claro qué sucede que aquí seguimos trabajando esto es como el que dice no no yo soy desarrollador de java ya pero de que java vale

porque es como el chiste no quería ligar con una programadora pero no se dejaba no se dejaba es que ahora de hecho cada vez me está pasando más y sobre todo cuando necesitas gente para un proyecto experta vale que claro hay gente que lleva muchos años trabajando el desarrollo de aplicaciones pero no ha utilizado cordata en su vida porque el 80% de las aplicaciones cogen datos de una base de datos por ser una pi rest y ya está no guarda nada local salvo cuatro en cuatro

opciones el user default y lo demás le da exactamente igual y programa claro es gente que programa en 2015 o en 2016 porque no ha hecho nada de eso luego también que haya usado suscripciones de esto aquí es totalmente o sea es un arcano encontrar gente gente que lo que lo sepa manejar bien y es o sea me refiero creo que lo han cambiado este año que tenemos una nueva api de store kit hemos entrado en tal complejidad que es que ya no sólo es que seas

desarrollador de ellos sino que hayas trabajado con x frango ok bueno pues ya lleves 10 años y te da igual la re que soy te pongan lo que te pongan vale tienes suficiente conocimiento para para abarcarlo pero es que si nos estamos convirtiendo un poco en esto de ejemplo que pones dejaba o yo que sé o de no de no hasta así soy programador de no de js pero has trabajado con no sé qué frango a no pues ya pues entonces no vales para el puesto da igual que sepas no

de que seas el crack de hacer tú las cosas no veo que sepas javascript porque javascript solo así como javascript o java así que sólo como java al final utilizas utilizas framework y aquí no sé si ya es que aquí ya no sé quién puede tener la culpa porque bueno la propia apel te ha puesto las fuentes de datos difusas pero claro que no lo actualices pero yo me he encontrado en muchos sitios que el problema es que no tienes gente que pueda utilizar eso de hecho a mí pasa en algún

proyecto que hemos ya hace años ahora ya menos pero es no quiero empezar en su yubai ya pero si empezas en su yubai cuando vayamos a contratar un programador necesitamos que sepa su yubai entonces nos estamos ciñendo a o sea nos estamos quitando objetivos gente que pueda entrar en el perfil es igual que lo de que aprendo yo o sea necesito yubai kit o voy directamente a su yubai pues depende depende si quieres currar una empresa yo diría que ahora mismo el 80 por ciento 85 me

apura te van a pedir aquí aunque ya esté migrando a su yubai pero vas a tener que arreglar bugs de yubai kit a mí me de hecho me pasó en una empresa que estaba cuando me fui vino un chico que además pues se cabrearon porque me iba no contaron conmigo para buscar a alguien vale y bueno de android ya había contratado yo a alguien pero claro de ellos no había nadie cuando me fui yo y claro contrataron

a un chico que sólo sabía objetiv C no había visto swift en su vida y teníamos tres aplicaciones y otras dos de clientes también que mantenía o sea estábamos desarrollando como dos o tres aplicaciones y tenemos otras dos o tres de clientes ya hechas que nos pedían de vez en cuando cosas y estaba todo en su y claro luego a la semana cuando me fui me llamaron oye que es que este chico digo a mí que me cuentas y porque habéis contratado a alguien que no le

contrataste tú y no me no me preguntaste pero a ver es que esto de las migraciones es que es súper difícil y ahí tenemos julio que pues anda que no habrá por ahí código de fortran y desde y servidores y programas en c puro que es que están ahí de que no es porque se hayan hecho ahora en c porque sea mejor hacerlo en c no están hechos en c porque se hizo hace 25 años y era la mejor manera de hacerlo claro en ese momento es que lo que estábamos comentando todo al final

dice no yo soy un programador de java ya pero resulta que eres de java que la última vez que te actualizaste estaba la versión 1.2 1.3 o sea ni siquiera te has enterado que ahora vamos por java 8 update 453 coma 24 y dice qué es eso no ni te has enterado que java tiene programación funcional o que le han metido mil cosas no incluso la parte de yo que sé en el mismo java script vale no no yo soy programador de java script ya pero sabes que java script soporta

también programación funcional sabes que hay librerías que le permiten tener tipado estricto como una que hay de facebook te dice no yo soy programador de python ya pero python qué versión porque python hasta la versión 3.5 en 2015 no tenía notaciones y entonces volvemos a pues todavía hay a día de hoy ocho años después del lanzamiento de las de los de las anotaciones de tipo de python código en python que no usa eso incluso hecho con versiones posteriores porque

hay mucha gente que no conoce ese cambio que hubo que desde luego pues es bastante más práctico a la hora de entonces qué pasa que somos funcionarios del desarrollo de verdad que vamos a querer trabajar toda la vida exactamente igual porque si yo que sé pues el visual basic pues yo es que sabía visual basic y ahora y sigo usando visual basic y a mí que no me cambien el visual basic entonces la gran pregunta es es realmente bueno que todo vaya evolucionando tanto y

tan rápido y que como nos pasa a nosotros tengamos que estar actualizándonos año a año con las novedades y que hasta el año pasado CoreData y ahora SwiftData y ahora no sé qué y sobre todo el gran problema que es un poco a donde vamos aquí al final irónicamente un tío que sabe Objective-C porque seamos sinceros vale yo no estoy de acuerdo con eso pero ahí está la realidad y no puedo no verla y es que un tío que sabe Objective-C a día de hoy es el puto sheriff del mundo porque va a

conseguir trabajar con cualquier proyecto hecho en UIKit que no use ninguna API nueva de los últimos años y va a ser capaz de mantenerlo sin problemas va a ser capaz de trabajar con él y lleva 20 puede llevar fácil 12 13 años pues prácticamente sin mover o sin usar nada a lo mejor incluso hasta se le da también que sigue trabajando en MRC y no usa Objective-C 2.0 y sigue haciendo los release de los objetos y es feliz y lo tiene todo controlado yo tuve un alumno lo he contado aquí

tuve un alumno que es la única persona de todas las que han estudiado SwiftUI conmigo que me dijo SwiftUI está muy chulo SwiftUI está guay pero yo prefiero seguir trabajando como yo trabajo y cómo trabaja él pues trabajaba haciendo todas las apps de UIKit directamente a pelo a mano programado las interfaces las constraints todo tenía una serie de librerías que ya las tenía más que machacadas unas plantillas de apps que ya las tenía totalmente machacadas y era capaz de

hacer una app pues en el mismo tiempo que yo podría tardar en hacerla en SwiftUI vale entonces qué es mejor es que ese es el kit de la cuestión entonces obviamente es mejor lo más nuevo porque es mejor es más eficiente es más práctico es más pero resulta que empiezas con SwiftUI y yo ahora tengo que estar enseñando a los alumnos el si estáis en IOS 15 se puede usar esto si está en 16 esto si está en 17 esto si yo enseño a la gente a usar SwiftUI y quieren porque por decisión propia

o porque están en una empresa tienen que soportar hasta la versión 15 pues no van a poder usar el navigation stack ni van a poder usar la navegación programática ni van a poder navegar de una forma fácil a un lugar con a través de una notificación por ejemplo una push notification que entra a la que yo le pulso y quiero que me vaya a un sitio que esté derivado de dicha push notification como un whatsapp pues para que eso lo pueden hacer lo tienen que montar de una manera pues en fin tienen

que fight the framework tienen que pelearse con el framework para hacerlo porque el framework tiene una manera de hacerlo pero no lo puedes usar porque sólo funciona a partir de IOS 16 vale entonces eso es lo que no me parece correcto y encima te pone warnings cuando utilizas navigation view y encima cuando exactamente te dice que navigation view está deprecado y que uses el otro entonces no puedo claro entonces a mí es lo que me molesta de apple que apple no está teniendo

en cuenta no está cuidando o yo creo que ni siquiera está viendo que las empresas no pueden soportar sólo la última versión igual que hacen ellos que las empresas no pueden coger las apps que están usando en versiones anteriores y mandar a la mierda a miles de usuarios o literalmente millones de usuarios que todavía no que o no pueden o no quieren si no quieren ya lo dije la otra vez pues allá ellos pero si no pueden porque tiene un iphone 7 y no tiene por qué comprarse un

iphone nuevo hostia o un iphone 8 si alguien sigue teniendo un iphone 8 un iphone 10 pues adiós IOS 17 no está soportado por lo tanto pues ya no tienes tipkit no tienes las nuevas gráficas de switch arts no tienes swift data no me parece lógico a ver yo creo que la excusa quedará en ellos nunca de hecho mira que me estoy en el slack este que montan para la wdc y de vez en cuando me leo por la charla es que tengo bolitas de esta o sea de canales sin leer un montón pero o sea

nunca he visto en los foros de apple cuando a veces una vez cada año dan alguna explicación los de los de apple supongo porque ya te digo que no las he visto que dirían algo como vale pues si soportas ios 14 pues utilizas sólo las apis de ios 14 haz lo que puedas con ios 14 y lo que no pues montátelo tú solo o como quieras supongo que te darán ese porque a ver a mí también es que un poco de rabia porque quieres montar algo y tienes una versión baja y vas a hacer algo y que hago un

if available pero no porque es que al final lo terminas montando de la manera en la que la api soportada más baja obviamente porque si es que si no no vas a hacer el mismo desarrollo dos veces vale pero luego hay otras veces que eso me molesta más que depende de la versión que estés no se muestran las cosas bien de hecho el otro día creo que fue para ios 15 de hecho lo estuve hablando con un compañero y no nos acordábamos cambiaron algo en los estilos por defecto de los botones

en el storyboard entonces si tú no le ponías si ponías estilo plain no te dejaba cambiarle la fuente o a partir de no sé qué versión de la 15 no se veía la fuente cambiada pero en la 13 sí vale y si casi cambiabas de estilo de botón te aparecía lo del deprecado bueno una mierda o sea hay cosas de esas que a veces cambian algo y ahí sí que te obligan porque ya no está no es que esté deprecado es que ya está allá no se puede usar no es una recomendación me refiero sino

que ya no está en la siguiente api ya no está con lo cual sí o sí si quieres soportar ellos 16 ellos 14 para ellos 16 tienes que poner un if available para hacerlo de esa manera porque si no no lo vas a conseguir eso sí que es una mierda porque aparte aparte de eso también obliga a una empresa que tiene una aplicación que ha hecho un esfuerzo económico para la aplicación y qué tal a que todos los años oye mírame la aplicación que a ver si es compatible que de hecho

afortunadamente pasa menos pero yo me acuerdo y os 10 y 11 por ahí que sacaban una o sea cuando salía la nueva versión en agosto había que revisarlo porque llegaba a septiembre y actualizaba niños y no funcionaba aplicación pero no funcionar de no funcionar nada es que no saber yo por ejemplo intento solventar esto cuando doy mis formaciones obviamente vale yo cuando doy mis formaciones ahora que vamos a empezar el suite del upper program suite del

upper program es solo en su if you hay quieres o decir que nos centramos en la última versión y al resto no obviamente no a ver el programa formativo que tenemos en swift en el suite del upper program que está centrado en su if you hay está estructurado de manera en el que dividimos ios 15 ios 16 y ios 17 entonces en ios 15 16 y 17 yo te digo qué puedes hacer y cómo hasta ios 15 para que puedas hacer todo lo que puedes hacer en las versiones más nuevas pero usando versiones más

antiguas entonces al final es la solución que yo he encontrado pero es una solución que yo encuentro a nivel académico que hasta ios 15 porque vamos a ser totalmente vale esa hasta ios 15 todo el mundo menos los dispositivos que se quedaron en la 12 que esos no soportan su if you hay por lo tanto si tienes que soportar dispositivos que vayan en la 12 o anterior pues mira no haga su if you hay porque no te va a servir para nada vale porque su if you hay sólo

funciona a partir de la 13 ahora su if you hay tienes 13 14 y 15 todos absolutamente todos señores project managers project owners project product owner viking fronker handle porquer very handle don del nada donde handle del mundo todos absolutamente todos los dispositivos que soportan a ios 13 soportan 14 y 15 es absurdo es estúpido es innecesario es decisiones tomadas por gente que no tiene ni puñetera idea de nada que quieran soportar versiones 13 y 14

porque todos los dispositivos que funcionan en la 13 y la 14 soportan la 15 ya en julio pero hay dispositivos que están todavía en la 13 y la 14 porque hay gente muy idiota que no quiere actualizar pero no porque no pueda porque no quiere y si no quiere yo no lo respeto a ver si tú quieres una aplicación tú quieres una aplicación es un dispositivo y para actualizar y puedes actualizarlo para que soporte esa aplicación que si no los si no actualizas

es que es tu puñetera culpa es que es exacto por lo tanto eso es culpa del usuario vale por eso nosotros desde el suyo del over program empezamos a hablar de su if you hay en ios 15 y en ios 15 ya se puede hacer una app completa se puede hacer una app completa que tenga un montón de funcionalidades que permite hacer un montón de cosas etcétera que las cosas chupi chupi chupi chupi hay algunas que no están soportadas en la 15 efectivamente por eso yo te enseño a cómo

por detrás replicarlas aunque no tengas la versión más nueva y eso julio cubre el ahora mismo el 94 por ciento de todos los dispositivos y el 98 por ciento los dispositivos introducidos en los últimos cuatro años o sea ojito vale el 98 por ciento del total de dispositivos que se han presentado en los últimos cuatro años ya soportan a ios 15 y el 94 del total de todos o sea por favor vale entonces en fin insisto si sé que hay usuarios que aún siguen la versión 13 o 14 pero no

actualizan porque no quieren así que respeto a ellos cero vale porque la diferencia para tus desarrolladores va a ser enorme vale ahora saltamos a ios 16 ahí ya no lo siento pero ahí se quedaron fuera los iphone 6s los iphone 7 los 7 plus varios que no pues ya ahí ya no es ahí ya es gente que no puede actualizar de acuerdo poca pero bueno poca es que si yo tengo una aplicación de 100.000 usuarios y tengo un 0.1 por ciento bueno pues a ver ese 0.1 por ciento de 100.000 pues hombre

son unos cuantos hay gente que tiene pues empresas que van muy ajustadas y que ese porcentaje pues oye si son miles vale no voy a hacer la operación porque ya me equivoqué en el pasado programa creo en uno de estos que hizo un cálculo de fatal vale pero ya son miles de usuarios los que te vas a dejar fuera entonces yo te enseño a cómo usar a ios 16 qué opciones tienes qué opciones nuevas tienes cómo puedes insisto replicar lo que puedes hacer la 16 en la 15 de distintas maneras porque

los navigation stack los puedes replicar si haces navegación basada en estados vale con ios 15 etcétera vale incluso puedes replicar el efecto del push y el pop vale que tienen la navegación estupendo yo te enseño cómo se hace eso pero ahora este año me han complicado más todavía la vida porque este año yo voy a tener que dar con ios 17 las dos arquitecturas por lo que voy a tener que enseñar cómo funcionan los observed objects, los stayed objects, los

observables objects, los no sé qué, los tal tal tal ping ping ping en virón menoye y su padre lo que es todo lo que teníamos de arquitectura de SwiftUI hasta la versión 16 y luego enseñarte la nueva de ios 17 con Swift Data entonces tú ya sabes lo que hay tienes la información para soportar ios 17 ios 16 y ios 15 eso te va a permitir hacer y prescindir por completo de todo UIKit depende de hasta dónde quieras llegar con tu app pero en un muy alto porcentaje sí y las cosas que tengas

que usar de UIKit yo te voy a enseñar cómo usarlas de una forma que no sea excesivamente complicada y que además sea reutilizable. En vez de ver un vídeo por ejemplo en vez de ver una web por ejemplo o poner un selector de fotos porque en ios 16 hay un picker pero no está en la 15 o el diálogo de mostrar de compartir que en muchas ocasiones son dos instrucciones es que hay integraciones de UIKit que son dos instrucciones son dos líneas de código para hacer un sheet de

acción de compartir algo vale entonces bueno pues todo eso te lo enseño. ¿Se puede prescindir de UIKit? Insisto sí pero ahora está también la realidad del mercado con lo que es lo que ha dicho Arturo que la gran mayoría de las empresas a día de hoy aunque ya estén trabajando con SwiftUI seguro que tienen proyectos en UIKit.

Entonces ese es el problema y además yo que lo veo día a día esa escasez de talento que dicen cuando buscas algo muy pues eso por lo que decía no es que necesito para este proyecto pues utilizamos mucho core data utilizamos encriptación utilizamos suscripciones claro y te encuentras a gente que a lo mejor pues por su perfil te encaja porque lleva muchos años pero nunca nunca ha dado con esos fringos que probablemente si el tío es listo y lleva muchos años programando se lanzará ello y no habrá y no habrá ningún problema pero también

yo he visto mucho código con unas burradas sobre todo en este tipo de framework porque además te encuentras burradas con cosas muy específicas en los códigos porque hay cosas que como todo el mundo se las sabe pero luego hay otras que claro porque y dominar y tú lo sabrás más que nadie Julio dominar core data cuesta o sea saber todos los entresijos no hacer burradas y hacer las cosas bien cuando te sacan de sota caballo y rey tiene su complejidad porque digamos que hay como dos

niveles pues yo que sé también dominar la parte de los hilos vale la parte de los hilos no es saber no es que cuando te ponen un error en morado es code tienes que poner dispatch q punto main punto sink en los que pongas vale eso no es saber cómo funciona gran central dispatch vale de hecho el otro día le paso a julio una burrada de de un código bastante seria y de hecho y me he encontrado proyectos en la vez me hace mucha gracia el meme este de que este típico que sale un tanque echando

un chorro de agua y coge alguien y le pone una pegatina para para que deje de echar agua pues eso es lo mismo cuando tengo un error de sincronización de que de repente algo pasa cuando no tiene que pasar o tengo el error este morado de scout de algo de hilos te pongo eso ah bueno y otra cosa que descubierto hablando de esto ya me pasó en su día con el sdk de facebook pero me ha vuelto a pasar con otro sdk y le voy a decir de se llama intercom vale que también es

de analítica que tiene una inversión de prioridad en el código o sea en serio estás distribuyendo un puñetero sdk que estar utilizando pues el intercom no sé pero el de facebook ahora hay un millón de aplicaciones que tienes de facebook y tienes ese problema porque no sabrá ni lo que es no sabrán ni lo que es a mí es que eso es una cosa que me ha dejado bastante flipado la verdad porque yo lo veía y digo algo tengo que estar haciendo yo malo yo que sé tengo que

estar llamando yo mal digo no puede ser que el este lo tenga y efectivamente lo tiene madre mía para que no lo sepa rápidamente una inversión de prioridad es un efecto colateral de intentar evitar un data race un data race es cuando dos hilos van a usar el mismo dato al mismo tiempo y por lo tanto se crea una desincronía principalmente porque aunque tú pienses que los dos datos se van a usar al mismo tiempo en realidad no es así sino porque siempre hay una cola de procesos en el que

o bien en el caso de ARM los procesos van uno a uno porque ARM no ejecuta ocho precha ARM no ejecuta y los a la vez aunque tú creas que sí pero en realidad el momento de proceso lo hace uno a uno es como una autopista que sólo tiene una entrada pero pasan los coches muy rápido vale intel si intel si es capaz de tener varias filas de coches que pasan todas a la vez vale pero independientemente de si pasas todo a la vez o si pasa uno a uno se generan desincronías en

los procesos a través de los mnemónicos el lenguaje binario funciona como la película de johnny de keanu reeves a través de mnemónicos un mnemónico es una instrucción de lenguaje ensamblador vale un mnemónico es mover un dato de una dirección a otra de memoria es hacer una operación de suma básica es hacer cosas pues eso instrucciones de lenguaje ensamblador si yo tengo una función que lo que hace es a igual a más uno lo que sucede es que a igual a más uno no es una

operación a igual a más uno es ir a la memoria leer el dato guardarlo en una zona intermedia hacer la operación meterlo en el registro de la cpu me encargar la operación que la operación salga que se lea la operación que se vuelva a poner en memoria si entre todos esos pasos dos procesos distintos leen la memoria a la vez o en procesos uno al lado del otro y no terminan valesa imaginaros que yo tengo dos operaciones de aigual y de a igual a más uno y las dos están

concurrentemente se ejecutan a la vez si yo voy a leer la memoria cuando a es igual a uno y vuelvo a leer la memoria para el otro proceso antes de que el anterior termine y grave que ahora es dos porque ya lo ha sumado uno tengo dos sumas que han leído los dos a la vez a es igual a uno eso es un data race porque estoy haciendo dos operaciones y en realidad se ha ejecutado solo una porque hay una desincronía y además como es algo totalmente aleatorio pues es un lío para

solucionar eso que se hace bloquear el recurso si yo voy a sumar a bloqueo a de forma que cuando un proceso va a usar a queda bloqueado y si un segundo proceso llega a usar a tiene que esperar a que el anterior haya terminado pero si la prioridad de los procesos que van a leer a es distinta y este proceso segundo que va a hacer lo que sea tiene más prioridad que el anterior no puede ser que este no se pueda ejecutar porque el anterior tiene un recurso bloqueado y por lo

tanto este que tiene menos prioridad acabaría antes porque éste no puede iniciarse hasta que éste no haya terminado eso es una inversión de prioridad que un proceso que tiene menos prioridad que otro termine antes cómo se soluciona pues que cuando un elemento bloquea un recurso lo que se hace es elevar la prioridad del mismo para que nunca ningún proceso anterior porque si no se generaría una desincronía de cpu que puede llegar a colgar tu aplicación vale o sea es un error de

primero de concurrencia pero claro y de mirar la consola aparte es algo que estoy programando no tengo cuidado y se me pasa pero es que en cuanto ejecute el programa me va a salir un error bien gordo bueno pero tú tendrás activado el 3 sanitizer puede ser no no no sale igual sale en el main checker sí pues entonces ni te cuento sale sale directamente bueno de hecho a ver cuántas veces nos encontrado el de facebook me pasó solo con el 3 sanitizer y me pasó una vez que me puse

pues eso pues de vez en cuando en las aplicaciones ahora no es tan lento depende el ordenador que tengas pero ahora no es tan lento pero hace años era bastante bastante lento cuando lo activabas pero siempre viene bien como consejo yo que sé una vez cada tres o cuatro días cuando añades bastante código ponerle 3 sanitizer porque a veces pues todos somos humanos vale y para estas las máquinas para que la máquina no se equivoca y para decirte pues en algún sitio que hayas podido

liarla un poco con con la parte de hilos de facebook tenías que activarlo pero en él en este no en este con él este desactivado sale ahí bien gordo madre mía ese es el problema por eso yo por eso a mí no me gusta la librería de terceros vale ni los fringos de terceros porque no sabes a quién le estás entregando la confiabilidad de tus usuarios y de hecho yo hay una cosa que no soporto o sea yo no puedo a nivel toc tener ni un puñetero warning en mi aplicación no puedo o sea no

o sea empiezo a convulsionar no lo soporto ya a veces me toca convivir con ellos en proyectos grandes y madre mía toca taparme los ojos de vez en cuando yo la cosa es que el otro día me preguntaron que querían añadir otro es otra librería vale no sé y de hecho me costó explicarlo porque me dijeron no eso va a impactar o sea en el rendimiento tener unos cuantos sdks por ahí detrás porque claro estamos en la analítica google analytics vale tú mandas eventos es decir tú le

llamas pero eso aunque tú no le llames por detrás está haciendo un montón de cosas bueno está ejecutando código todo el rato me parece súper divertido que para usar google analytics tengas que montar firebase por narices pues eso es algo un proceso en segundo plano en hilos en background pero claro eso tienen ejecuciones ahí todo el rato y claro me preguntaban oye qué impacto es en el rendimiento y yo le dije a ver impacto a día de hoy digo y a lo mejor en android te encuentras

con dispositivos de bajo coste antiguos y demás y a lo mejor ahí tienes problemas pero a día de hoy en niños normalmente digamos que suele para una aplicación normal vale la aplicación medianamente normal no vas a tener problema por tener cosas ahí en background vale sobre todo porque como están separados los hilos de ejecución no se te va a colgar la aplicación o no vas a tener por a lo mejor yo que sé pues algún proceso que hagas gracias tampoco hacemos procesos si estás en un

proceso grande de comprimiendo un archivo yo que sé cosas de esas y tienes otras ocho cosas corriendo background pues en vez de tardar un minuto te va a tardar un minuto y 10 segundos vale pero en principio no pero también le dije yo cada vez que metes algo algo nuevo que se está ejecutando por detrás puedes llegar a un problema de rendimiento pero aunque no tengas problemas de rendimiento te puede provocar un casque de hecho hace dos años creo que fue una librería de google maps creo que

fue hacer una actualización del servidor además no tienes ni que actualizar la app, no necesitas nada de código y hace una actualización del servidor de google y crasheaba pero a modo yo no sé si ya estaba creo que sí que estaba café suite ya en funcionamiento pero petaron las aplicaciones de uber de un montón de un montón de aplicaciones porque habían metido un crash esas librerías de terceros y claro y tú tampoco puedes hacer nada tú tienes tu aplicación en producción que depende

de esa librería sí o sí y no la puedes apagar de un día para otro así que hasta que no lo actualizaron pues estabas estabas un poco vendido así que las librerías de terceros hay que vivir con ellas pero si se pueden evitar pero si pueden evitar eso y coco a pods no por favor no no mentes a la bicha es el favor mira que yo ahora ya estoy empezando a usar bien librerías de primeros vale librerías mías que monto pues eso de trabajo en red de cifrado de componentes de su joy y tal

cosas así pues que bueno que la verdad que me ayudan a que los proyectos sean más eficientes y a tener una parte de código compartido y la verdad que con su paquete manager va a decir sabes lo que he hecho me vas a matar julio a ver hecho un framework aparte pues precisamente para nos lo comentaba para un log vale tenía que hacer un log y digo pues mira aprovechamos por un franco aparte además como tenemos varios talles widget como se llama extensiones de

bluetooth y varias componentes digo pues mira mejor hago un framework y cojo y cometí el error además que es un framework de log que sólo el log que tampoco tiene mayor complejidad no tiene recursos de que a lo mejor dan un poco más de guerra en su package manager recursos de ficheros y cosas así vale pues voy y hago un xc framework en lugar de un paquete de spm julio y cuando mando la pull request para revisión me lo dicen oye por qué no has metido esto en un paquete y digo

porque soy tonto o sea no tengo otra explicación porque andaba me lo pidieron como con mucha premura y claro el problema es que ya tenía todo el código y a lo mejor hacer él moverlo de un lado para otro me llevaba dos o tres horas sabes y tenía que entregarlo ya digo si eso más adelante nos lo planteamos pero dije madre mía qué oportunidad perdida lo de apple muy educados ellos y bueno y por qué tal no sé qué arturo because i'm stupid todos hemos sido muy estúpidos

en muchas ocasiones así que no te preocupes que la verdad es que lo recomiendo ahora julio y hablando esto de justicia que es muy bueno separar aunque sea tu propia aplicación y sólo vayas a utilizar ahí ya sea preferentemente ahora porque yo creo que apple está tirando siempre ahí hacer un paquete de swift y si no un framework vale para separar cosas porque luego te encuentras que es uno de los problemas que tenemos otros por lo que estamos separando y nos está costando un

montón que tenemos que hacer una extensión de compartir vale claro necesitamos utilizar muchas características de la aplicación pero claro o lo haces a lo burro cogiendo todos los ficheros de tu aplicación y metiéndolos como ficheros de la extensión vale o no te haces un franco por partido con la red y con determinadas cosas vale que con lo mínimo que necesites o varios imagínate que tienes uno para la red otro para empezar que tienes muy organizadas las dependencias evitas

dependencias circulares que también aquí hay un montón vale y cosas raras y por otro porque lo tienes más organizado y cuando quieras hacer otro tarde cuando quieras hacer un widget porque mucha gente no voy a hacer un widget y de repente se ve que tiene que trasladar parte de su lógica pero claro su red tiene la dependencia de los users defaults y de los no sé qué y entonces se vuelve eso y luego de otro controlador que se ha hecho para la caché y claro portar eso al widget también

al final tienes que portar todo y el widget el target del widget ocupa más que el target normal vale porque eso se vuelve a compilar todo te quiero decir no no es como un framework por partido que sólo se compila una vez para tu aplicación pues esa es esa es mi pena has probado tú el tema de la firma de los de lo de las librerías no pero eso funciona con él con él con la librería de sus paquis manager o funciona yo creo que no que son los xc framework cuando los distribuyes que

puedes distribuir los firmados ya que yo entiendo que ahora pues firebase y tal que ahora ya funciona a 100% en sus paquis manager lo terminará por incorporar supongo no lo que pasa es que no sé porque creo que ahora mismo firebase y estos tienen por dentro luego un binario pero no es un xc framework o es un binario de los de toda la vida es un vídeo bueno la verdad es que no lo sé con seguridad yo sé que en su momento usaban un no el xc framework sino el otro que

se genera que es que es un binario ya compilado ahora no recuerdo cómo es que por ejemplo la cosa es que el suy paquis manager el paquete de suy no puede firmado porque al final tú distribuyes código salvo que hagas esto que sea un binario vale que el binario puede ser si es un xc framework si lo podría afirmar de esta manera pero si es un binario normal no me pierdo un poco pero claro un paquete de suy no puede firmado porque al final es código tú estás

descargando código o recursos porque en este caso digamos que el truco es que el binario compilado para que no veas lo que hay ahí dentro lo hacen como un recurso vale en el paquete como un recurso y no como código entonces no sé la verdad que que no sé cómo cómo resolverán esa esa parte es una de las cosas que tengo pendiente de mirar pero desde luego yo desde aquí os recomiendo que le echéis un ojo al tema de los de los frameworks propios vale de las librerías lo único tenéis

que hacer es modularizar aquellas clases, struts, enumeraciones, tipos, etcétera que más utilicéis y crearos en scode un package vale entonces os creáis en scode ese package ponéis todos esos componentes y lo único que tenéis que hacer es dar un commit de lo que sea y luego poner un tag a ese commit con lo que es la versión vale por ejemplo normalmente se empieza con la 001 por ejemplo pues empiezas a poner la 001 o la 0.1 como tú quieras llamar a ese versionado, taggeas ese

commit con ese 0.1 o 0.01 o lo que sea y haces un push al servidor incluyendo los tags entonces en ese momento ya tienes la librería en github y cualquier nuevo proyecto que vayas a usar sólo tienes que decirle importar librería en lo que son las parte de las capacidades y lo que es la parte de package que tiene el proyecto de scode le das la url de tu github y automáticamente la importa y la importa conociendo cuál es la versión de forma que luego cuando tú hagas alguna

modificación en la librería el commit que tiene esa versión lo taggeas como 002 lo subes a github y en tu aplicación le das a fichero paquetes de swift actualizar a la última versión y entonces irá el solo a git recuperará la última 002 y la pondrá y la tendrás funcionando es muy simple la verdad y es muy práctico para tener tu código mejor mejor repartido de bueno pues sería un poco el tema por lo tanto bueno pues en conclusión ¿se puede usar SwiftUI solo sin nada de UIKit? yo

creo que sí creo que sí a partir de iOS 15 porque tiene los suficientes componentes y porque la y aquí es un kit muy importante vale es decir no es cuestión de decir yo voy a hacer una app en UIKit o voy a hacer una app en SwiftUI es que la forma de pensar la app es totalmente distinta y aquí es donde tiene que ser la diferencia que tenéis que tener presente porque la forma de pensar desarrollar

y usar porque hay muchísima gente yo conozco mucha gente que dice que SwiftUI no le gusta que es una mierda que no sé qué que para arriba y que te lo razona y dices pues pues tienes razón desde tu punto de vista SwiftUI no sirve para una puñeta vale por ejemplo nuestro amigo este que además no está en twitter el Stephen Thoreau Smith que está solo en mastodon no ha querido volver a x hay que ver de verdad es de los pocos desarrolladores que no han vuelto a twitter desde que se fue desde que

lo compró Elon Musk bueno pues este hombre ha estado trabajando durante mucho tiempo con SwiftUI pero ya se ha dicho que no va a seguir usándolo hasta que Apple muy importante no homogeneice todas las versiones es decir que no haya cambios de que de pronto en una versión algo funciona y en la siguiente no o que haya no sé qué o que no sé cuánta en fin porque principalmente él está trabajando con el Mac que es cierto que el Mac hasta la versión 16 no ha tenido la suficiente

estabilidad como para permitirle o como para tener las garantías de que todo te va a funcionar sin ningún tipo de problema vale es que ahí julio es una de las ventajas yo por ejemplo hice una aplicación en SwiftUI que era muy sencilla y además digamos que hice la de usuario bueno era como usuarios internos vale y eso está en el store que era para iphone pero luego es una versión de Mac que distribuía a nivel de la empresa para los administradores que tenía esas

capacidades y más y precisamente hacer un SwiftUI me permitió hacer en muy poquito tiempo con y mantener además las dos al tiempo es decir yo cambiaba algo ni siquiera había vistas que eran distintas pero joder tenían un montón de lógica compartida entre las dos pero sí que es verdad que con Mac había algunas cosas que funcionaban muy raro pero muy raro y muchas veces que terminaba haciendo una vista nueva más que poner y estoy una plataforma en otra porque es que era imposible

y a ver y yo te estoy hablando de una aplicación interna pequeñita si esto es otros drones mid tienen aplicaciones que utilizan miles de personas claro tenerlo que de repente de una versión para otra que a mí también me ha pasado con alguna vez en su UI para versiones de 13 y 14 de ellos que de repente sale la 14.5 o 4 no recuerdo y se va a la mierda la aplicación empieza a funcionar todo mal y me tiro tres días a fuego para hacerlo funcionar con una versión intermedia

porque con una versión en mayores te lo esperas o sea si es así y cada vez que yo lo comentaba antes cada vez que hay una versión nueva pues si hay que coger la aplicación correrla si queréis apurar y esperar a que bueno de hecho mejor esperar a que salga la la res la de la release candidate vale y por favor ejecutarla en un dispositivo vuestra aplicación porque es que muchas veces te encuentras con una sorpresa que hay veces que es una línea de código un cheque

en scope lo que sea pero hay que hacerlo es un tener una lista de las aplicaciones que tenéis si estás trabajando sólo para la empresa ya está pero si tienes aplicaciones tener una lista y poneros de deberes a cuando vas de vacaciones a principios de septiembre y revisar todas las aplicaciones que se ejecuten en la versión release candidate es algo que va a ser muy importante para vuestro para vuestro desarrollo el que comprobéis que todo funciona bien en las nuevas versiones

vale incluso como dice arturo las versiones intermedias y eso es una de las cosas que a él le han hartado no el hecho de que bueno pues de pronto una versión intermedia sin venir a cuento cambia algo incluso por un error y de pronto deja de funcionar vale entonces eso es lo que a él le ha quitado las ganas de seguir el motivo principal y ha dicho que hasta que no haya una API que tenga la suficiente estabilidad como tiene UIKit pues no va a entrar de acuerdo no va a volver a SwiftUI

pero también es cierto vale porque yo he sido he mirado su código y he visto las explicaciones que da a nivel técnico y tiene razón en un 50% que si insisto es la parte de la estabilidad de la librería que no cambie que tal la madurez de la propia librería etcétera eso se lo compro lo que no le compro es que cuando tú ves el código que él hace está haciendo un código que tiende a imperativo eso ya es un problema es decir cuando tú quieres desarrollar una aplicación en SwiftUI

igual que la desarrollaba si diseñabas con UIKit ya te lo adelanto vas a fracasar vas a fracasar vas a cogerle odio SwiftUI y vas a pensar que aquello es una mierda pincha en un palo y punto y no vas a querer volver a verlo en tu vida porque has intentado usar SwiftUI como si fuera UIKit y no son iguales no tienen nada que ver es como si intentas programar en Swift igual que programabas en Objective-C lo siento no porque en Swift tienes Struts que no están en Objective-C porque en

Swift tienes Enums que no están en Objective-C porque en Swift tienes un montón de cosas que no están en Objective-C y por lo tanto no puedes programar en Swift como si programaras en Objective-C porque tu código va a ser malo deficiente y mal estructurado. Eso no te pasaba a ti Julio al principio de utilizar SwiftUI cada vez estabas con una vista y no dabas y esto cómo coño lo hago y luego te das cuenta es que claro es que estoy intentando hacerlo como lo haría en UIKit

a mí me pasó un montón de veces me decían vale y cuando pase esto cómo hago que luego cambie esto y claro y esperaba algo imperativo no reactivo porque estaba pensando en el cambio de estado más que en el mantener el estado. De hecho el otro día leí un artículo que decía que en SwiftUI no construyes vistas sino que tienen un body en el que describes una vista.

Digamos que tienen que estar todas las opciones y todos los estados manejados no es como en UIKit que tú empiezas a cambiar cosas a cambiar cosas sino tú aquí tienes que decir voy a tener estos tres estados y va a haber estas transiciones y en cada estado pasa esto no no en UIKit tú le decías cambia este estado y añado esto y quito esto.

De hecho yo luego a raíz de esto muchas veces en UIKit he aplicado un poco esa lógica y lo primero que hacía es hacerme un enum con un estado y luego en algún sitio me hacía una función que cuando cambiase de alguna manera ese estado me añadiese y quitase cosas a la vista según el estado y así en vistas complicadas la verdad es que funcionaba bastante bien y seguramente que hay alguna arquitectura por ahí que se base en eso. De hecho todos conocemos el maravilloso, la maravillosa arquitectura

de Composable Architecture ¿y de Composable Architecture qué es? pues no es más que convertir SwiftUI en React Native a partir del patrón Redux ni más ni menos que de hecho ya os adelanto si habéis programado en Decomposable Architecture que sepáis que el código que ya tenéis hecho no va a compilar en IOS 17 porque el agente responsable de TCA ha cambiado por completo toda la arquitectura porque como la arquitectura de IOS 17 cambia pues la han

cambiado por completo aprovechando las ventajas que aporta IOS 17 con el añadido de que no vas a poder actualizar a la última versión tu librería, o sea tu aplicación no vas a poder actualizarla la última versión de TCA si no soportas IOS 17. Pero oye que esto no pasa solo en todos los sistemas es que pues eso tú haces una app en React Native vale y la app de React Native cada vez que se actualiza React Native pues ríete

de las actualizaciones que tienes que hacer y de lo que deja de funcionar because potato Yo he tenido suerte la verdad de hecho es que cada uno ve su realidad yo cuando empecé digamos en el mundo de las aplicaciones móviles tenía trabajaba muchos proyectos con este tipo de o sea con React con Córdoba mucho híbrido no sé si es porque...

Córdoba con V por el que no lo conozca que es muy bonita pero hace mucho calor y yo no sé si es que se ha cambiado o bueno a lo mejor me he metido yo más pero ahí sí que había verdaderos problemones cuando salía una nueva una nueva versión o bueno lo que hay ahora son arquitecturas un poco digamos mixtas que a lo mejor lo que hacen es pues tengo mi web pero le añado una parte nativa vale pero eso es menos punible en mi manera de ver es tengo la web que hice que se adapta bien a mobile vale pues hazme

cuatro cosas nativas pues para que en el móvil sea más presentable como aplicación pero no sé yo hace mucho que no que no veo eso y ya te digo es que pero de verdad de un cliente llamar y decir qué pasa con la aplicación que es que no nada pero has actualizado sí sí me salió aquí una actualización y tal estoy en iOS 11 y yo amigo de viejo luego le decía lo que le iba a costar y ya empezaba porque es que sois unos ladrones porque es que ya pero no nuestra culpa pero

le has dado a actualizar llama a facebook o llama apache o llama a quien sea lo que serán los responsables de esas librerías exacto y a veces era fácil porque era eso actualizar el proyecto a abrir el proyecto de actualizar y ya está pero otras sí pero nos guste o no pues hay que ir actualizando hay que ir mejorando hay que ir actualizando nuestro código manteniéndolo en fin si queremos que todo funcione de la mejor manera pues no queda otra

pues yo creo que nos ha quedado un café interesante no cargadito e intenso con matices frutales hemos hablado de los temas que nos gustan las librerías terceros las aplicaciones y ese tipo de cosas pero bueno prepararemos yo creo que podría ser interesante lo pasa que requiere una preparación un poco más grande pero estaría bien hacer ya aproximándonos a bueno yo no sé si has oído y a mí mi bola de cristal que anda por aquí me dice que hay una alta

probabilidad de que esto pase que no va a haber presentación de iphones en septiembre que se va a octubre porque apple no llega y eso me cuadra con que no llega también en el software no se va al final manda ya sabes que manda el hardware en cuanto a este dispositivo los iphone coge cierran versión de ellos y ya si eso julio en la punto 1.2 corregiremos toda la mierda que no nos ha dado tiempo pero es que acuérdate el desastre de ayos 14 o el

desastre de ayos 16 que nos salió en ipad solo salió en iphone yo creo que no se pueden permitir eso otra vez de verdad ya a ver yo y no lo hagáis estoy en las betas salvo en mac por razones obvias de compatibilidad con el code y yo no he puesto ninguna beta y de que me da el salvo escudo pero no he puesto ninguna beta de nada bueno si tengo un mac aquí que no es mío que es un mac m2 pro de catwin que me cedieron para una para una colaboración que todavía lo

tengo aquí y en ese si tengo sonoma porque no es un equipo de trabajo por lo tanto pues puedo probar ahí sonoma pero si no en el resto ni en el ipad ni en el iphone nada no tengo versión beta pues yo la verdad que bueno diría que en el ipad a mi ipad os no sé si porque no tengo un m1 de un ipad pro pero de con una 12 z y yo creo que desde que salió la arquitectura m ipad os a mí nunca me ha ido bien pero cuelgues y demás pero ya se sigue en su línea el watch muy bien salvo algunas

transiciones se nota que han cambiado muchas transiciones a veces cuando me llaman sale muy chulo porque ahora sale como sobre la pantalla que estabas y tal pero claro no no se oscurece el fondo ni nada con lo cual parece un bug y bien un guacho ese salvo por algún bajas y pero el que va un poco patata es el iphone hace cosas raras todas las noches se me reinicia lo sé porque tengo el modo standby y siempre selecciono uno de tiene como tres preset vale pues siempre seleccionó

uno y cuando me despierto está el por defecto que eso me hace pensar que a medianoche se reinicia el móvil y no sé si es por el calor pero arde o sea mi iphone siempre que lo toco está muy caliente no sé si es desde cada y no es desde que han puesto porque es porque es muy jota de más pero a ver también te digo que no es algo que no me pasase en niños 16 no sé qué hago mal julio pero el iphone estaba más caliente que el palo en churrero que el cenicero un bingo si es una

cosa que y de hecho si quieres para rematar cuéntanos porque ahí tú has indagado mucho en su vida tata yo no me da tiempo a hacer nada o sea indagar demasiado y yo a ti te oigo decir que está bastante bien pero la gente no está muy de acuerdo eso es porque no están cogiendo lo con la mano propia yo es que no estoy teniendo ningún problema con su data a ver si tengo un problema con su data que es el que está declarado en la documentación de apple que en un contexto

en segundo plano no se actualizan las queries a ver y esto tiene un porque a ver se deberían actualizar vale porque las para que la gente salió en los face requests no no se actualiza o sea los que son queries ahora claro es que ya no se encuentra pues no he dicho para el que haya trabajado con core data vale core data en swift y ui tiene el arroba fetch request que es la consulta a la base de datos que además es reactiva y que cuando la el contexto de la base de datos

cambia la consulta cambia los datos que tiene ese fetch request y por lo tanto pues puedes ver esos cambios vale y eso pues es algo que funciona excelentemente bien en en core data vale pero en swift data ya no es así en swift data vamos a usar una cosa que se llama arroba query ese arroba query es esa consulta que nosotros vamos a usar en lo que es nuestra aplicación entonces qué es lo que sucede sucede lo siguiente vale si yo creo vale cuando yo estoy en el comienzo de la

aplicación al window group de swift ui le tengo que anexar un constructor punto model container que es el conjunto de los elementos de digamos de los elementos de tipo arroba model que yo quiero utilizar entonces punto 1 si yo tengo una estructura de cuatro tablas pero hay una tabla principal y las otras tres son tablas hijas que funcionan por relaciones y esto es algo que casi nadie hace y de hecho yo aprendí gracias a uno de los seguidores que tenemos aquí en el chat

gracias a mister vallejo id que le mandamos un saludo desde aquí pues él fue el que me dijo no no oye que basta poner la tabla padre y las hijas ya se incluyen por defecto en la definición del model container esto no se lo he visto hacer a nadie bueno de hecho yo no lo hacía hasta que él me lo dijo lo verifique desde entonces lo hago así y funciona perfectamente pero cuando yo pongo este constructor model container puedo ponerlo de varias formas porque este modificador de swift

ui tiene varios constructores y uno de ellos es muy chulo porque uno de ellos tiene una cosa que se llama on first no sé qué es un constructor vale que permite elegir vale cuando yo creo el model container aquí on set up vale es que lo estoy viendo en la documentación vale cuando yo creo el model container le puedo pasar un contenedor que es una instancia de model container que yo haya creado aparte o le puedo pasar el array de las distintas tablas que voy a usar que son los

arroba models le puedo indicar si es un modelo que va a ir o no en memoria para el tema de las previews le puedo indicar si quiero que active o no el autosave por lo que tendría la opción de poder hacer un punto save o no al contexto si está el autosave que está puesto por defecto entonces basta hacer un punto insert y ya se hace el entre comillas comic de manera directa pero también le puedo activar el undo vale que por defecto está desactivado pero se puede activar

un undo que sea capaz de deshacer el último cambio que hayas hecho en la base de datos pero hay un closure que le puedes pasar que es el on set up y ese closure te permite ejecutar un proceso de inicio o de inicialización de la base de datos en el que el closure recibe un tipo de resultado que tiene dentro el model container ya instanciado y un posible error en caso de que no se haya podido instanciar ese model container te devuelve un tipo de resultado un result type entonces si

tú recoges ese model container ya instanciado que es el que se crea por el propio model container a través de el método de instancia modificador que tiene el window group pues directamente puedes hacer ese callback para que cuando se cree la base de datos se haga un proceso de carga vale si en ese sitio haces el proceso de carga el query funciona perfecto vale porque detecta el contexto y es capaz de hacer la actualización donde no funciona es cuando tú le pasas un model container

ya creado desde otro lugar que no esté creado a partir de este modificador en este caso se lo pasas a partir de una instancia de model container vale pero la instancia de model container es una instancia que no es concurrente que es lo último que yo resolví que lo estuvimos haciendo tú y yo a través de messenger que me estuviste mandando documentación yo estuve mirando tal y cual y al final lo resolvimos para que puedas tener un contexto asíncrono con protección contra

data race es decir con protección para que dos procesos no lean o escriban de la base de datos a la vez hay que construir un actor conformado con el protocolo model actor y ahí ya empiezan las cosas muy bonitas y simpáticas porque eso requiere una propiedad no aislada llamada executor de tipo model executor requiere el model container requiere el model context es decir un lío bastante con una fiesta buena una fiesta buena vale de hecho compartí el código en la

semana pasada en linkedin la esa declaración vale para que cualquiera puede pueda utilizarlo compartí como un snippet vale cuál es el problema que cuando tú haces la carga a partir de este model container que está creado a partir de una instancia distinta el arroba query no se actualiza tú le das funciona la app no muestra nada paras la app la vuelves a arrancar y te aparecen los datos por lo que la primera vez funcionó pero el arroba query no

recibe la señal de que ha habido un cambio en el contexto cuando estamos trabajando en segundo plano ese es el único error que yo he encontrado con swift data por lo demás grabo inserto trabajo sin ningún problema pongo datos relacionados relaciones grabaciones de datos todo funciona sin ningún problema ahora qué es lo que yo veo por ahí mucha gente que no está entendiendo cómo funciona que no se ha visto los vídeos de apple y que lo está haciendo pues según sopla el viento

entonces claro si no sigues esto es como core data porque de hecho swift data al final en gran parte son macros que tienen por detrás a core data si tú no sigues las reglas y el orden establecido swift data no va a funcionar bien vale ese es el key de la cuestión por ejemplo una de las cosas que te dicen que tienes que hacer es que tú creas y eso sí lo vi en su momento si tú tienes un empleado y ese empleado es de un departamento y ese departamento vale es una

tabla relacionada aparte cuando tú crees el departamento no tienes que insertarlo tienes que crear el departamento asociarlo a la tabla principal y cuando hagas la inserción del registro de la tabla principal con la asociación del dato hijo él sólo va a crear el dato hijo en el mismo insert pero si haces un insert de ese dato secundario y luego haces otro insert del dato principal te va a decir que estás haciendo inserts en contextos distintos y te va a dar un pete que

no va a funcionar yo creo que le falta documentación porque yo en los vídeos documentación y ser un poquito más intuitivo ya a ver también te digo que por ejemplo había hay cosas como había no hay cosas en core data que de hecho me pasó una vez que cuando haces una inserción en batch tienes que avisar al contexto eso no funciona si me refiero si tienes un contexto el main context y luego te creas otro en background para hacer otra operación si lo haces normal bien pero si en ese

background las haces las cosas en en batch vale pues digamos para que hace las cosas directamente en lugar de hacerlo sobre memoria y luego sobre sobre el sobre el disco lo hace directamente sobre el disco tienes que avisar al contexto padre de oye bueno de hecho al avisas al contexto aunque sea el tuyo para que ambos contextos se sincronice que eso a mí me llevo un par de días de dar vueltas y vueltas y vueltas hasta que encontré en lo más profundo de la de la web de

esta cover no de hecho no era ni esta cosa encontré cómo hacerlo pero pero me dio un quebradero de cabeza que luego son cosas que te encuentras que yo además decía esto la gente lo ha tenido que hacer no creo que sea el primero que le pasa pero yo creo que la gente lo ha tenido que hacer algún día y cuando ha dado con ello estaba tan frustrado que no se pone a compartirlo pero yo creo que son cosas que apple debería de hacer y a lo mejor además de lo que dice esto de hacerlo más sencillo

por muchos ejemplos porque a veces ponen una aplicación de ejemplo con el ejemplo más simple del mundo sin ninguna complicación y que te vale de muy poco eso cuando te pones a exprimirlo al final es la comunidad la que tiene que hacer ejemplos y ejemplos y ejemplos no sé a mí he hecho de menos más más documentación siempre de apple pero más ejemplos de mira así se hace esto vale te pongo 4 o 5 casos de uso y te digo cómo se hacen esos 4 o 5 casos de uso pero ya te digo

de suite data es que de suite data la documentación brilla por su esencia una página de overview que te pone cuatro cosas pero hay mucho mucho por detrás y sobre todo en un framework nuevo que la gente pues tiene que conocerlo y tiene que ir poco a poco pero a ver también es lo de siempre dentro de dos años es cuando su data ya ya estará bien empaquetado y ya tendrá todo lo que necesitemos y de forma sencilla pero vamos a lo de siempre lo presentan ahora y es dentro de dos años cuando ya

es accesible para todo el público y no sé porque los foros de apple la gente preguntaba y en slack también y varias veces le decían los ingenieros de apple no para esto usa acordata en plan no tienes razón esto no se puede hacer en su data o es muy complicado de hacer en su data o adlon acordata yo es que no pero fíjate a mí me preocupa mucho más el tema y mientras estoy hablando contigo lo estoy comprobando el tema del a ver yo creo que se les ha ido de las manos

el tema de los de las macros yo creo que vieron lo de las macros y dijeron esto es la leche vamos aquí a hacer vamos a reinventar su y por completo y las propias restricciones de las macros les han atado de pies y manos en un montón de cosas yo estoy probando ahora mismo la beta 5 y la beta 5 sigue teniendo el problema de los observables que es imposible hacerlos conformar con equitable no se puede vale es algo que yo no soy capaz de entender vale pero claro si tú quieres que

un observable pueda ser usado en un navigation stack lo que necesitas es que esté conformado con con hashable y para estar conformado con hashable tiene que ser equitable pues no hay manera no hay manera o sea no funciona o sea tú pones el arroba observable pones la clase final le dices que se conforme con estos protocolos y te dice no no está conformado con los protocolos porque no tiene los steps le pones tú la función igual igual y le pones tú la función has into

hasher y automáticamente te da un error de compilación y te dice no el tipo score no se conforma con equitable ya está porque porque patata ya está no no hay explicación es porque si las macros son muy potentes pero sí que son un poco y lo que dices tú creo que tienen muchas restricciones bueno de hecho otra de las restricciones que yo veo que se cargan por completo lo observable y que tiene todo el mundo reportado y que no sé cómo lo van a arreglar es

el hecho de que tienes que darle un valor inicial a todas las propiedades cosa que en los vídeos de apple no lo dicen y en los ejemplos de apple no no ponen valores iniciales tú te ves el vídeo desde la introducción a swift o te ven los vídeos de observable y ahí no te dice en ningún momento que tengas que inicializar los valores alguien ya se ha quejado ahí no me acuerdo si fue vincent se llama el chico este que se quejaba a no odori walls no sé algún algún chico de estos que que

publica contenido y que tiene un blog que decía que joder que este año que otros años pasaba pero que este año sí que es brutal la de cambios que ha habido y que hay muchos vídeos de la w desde este año que podían irse a la mierda porque luego el funcionamiento ha evolucionado un montón o realmente no funciona han tenido que hacer muchos cambios de hecho él pedía yo creo que le contesté y dije bueno por lo digo si lo suplen con documentación me vale ok veo el vídeo me

hago una idea y luego voy a la documentación donde está todo actualizado porque entiendo que cambiar el vídeo pues es un poco un poco más de rollo pero a ver si que es verdad que que pone todo este material al alcance de los desarrolladores cuando hay muchas cosas muy verdes y cambios muy grandes no sé además y hay otra cosa julio que me estoy saliendo un poco el tema pero hay porque apple presenta un nuevo sistema ligado a nuevas apis para los desarrolladores no pero

también presenta cosas el nuevo sistema que no tiene nada que ver con los desarrolladores pero los programadores o los empleados de apple que están trabajando en ambas características son los mismos y se presentan a la vez no tiene sentido o sea yo entiendo que es una wdc pongas betas y demás para que los desarrolladores se pongan manos a la obra pero hay cosas metemelas en una punto 1 o punto 2 porque creo que esto precisamente está bien el periodo de betas y

presentarlo y demás y el evento para que los desarrolladores podamos porque al final de la conferencia de desarrolladores se presenta un nuevo sistema para los usuarios pero la conferencia de desarrolladores pero es que mezclan todo mezclan cosas que no tienen api o que son cosas del sistema que a los desarrolladores ni nos van ni nos viene y claro en septiembre el 20 de septiembre que salga ios 17 tiene que estar tanto la parte de desarrolladores como la parte

digamos de usuario bien entonces claro te encuentras con que hay un montón de trabajo luego claro sacar seguramente a mediados de agosto se cargarán alguna saldrá una beta que se cargará dos o tres cosas y que dirán que para la siguiente versión calculo que su idata no será una de ellas porque imagino que alguna aplicación de apple ya la usará y tenga que estar para ese día yo es que no sé mira por ejemplo mientras estabas hablando he comprobado que en la última beta justo

esto que estamos comentando de la inicialización de los de las propiedades en una roba observable ya lo han corregido que tampoco por lo tanto si tú ahora haces una roba observable creas la clase final dejas las propiedades sin inicializar y por lo tanto le tienes que poner un init vale para darle valor a cada una de las propiedades compila sin problema eso sí haciendo que sea sólo identifiable porque en el momento en el que lo pones hashable o equatable ya se va todo se va

toda la mierda por lo que un arroba observable no lo puedes usar en un navigation link data sean un navigation link value dentro de un navigation stack que es como se supone que tienes que hacer eso entonces qué pasa que tengo que crearme los datos como arroba observable pero luego no lo puedo usar para que no tiene sentido pero bueno ahí está el bug y estamos en la beta 5 oye que chapó que ahora ya no hay que ponerle valores de inicio a los temas a los

observables a ver lo de siempre julio si el día que salga todo esto funciona nos damos con un canto en los dientes pero entonces como tú has dicho nos genera dudas claro pero como tú has dicho entonces para qué me sirven tantas betas porque como tú bien has dicho al principio dada está este movimiento no me des las betas de dame la rc tres semanas antes de lanzar para hacer las pruebas que tenga que hacer pero si tú pretendes que con estas betas yo vaya adaptando mi código

vas de culo porque el problema es que voy a lo que fue lo que pongo hoy no funciona mañana y no funciona pasado y el otro lo han cambiado y el otro no sé qué entonces no voy a estar cambiando cada vez que sacas una beta nueva es que no tiene ningún sentido entonces cuál es el sentido de esas betas es que yo a ver y julio por ejemplo suite suite data es un candidato a lo que pasó con su yui en ios 13 que el año que viene van a cambiar ocho cosas ahora lo van a dejar medio apañado para que

medio funcione y el año que viene van a cambiar 80 cosas es que yo eso es que ya me pasó y yo lo sufrí en mis carnes y eso que yo empecé con ios 14 en su yui con una aplicación en producción y ya te digo para mí fue un dolor de cabeza que no volvería a repetir y ahora mismo si me hago mis pinitos y mis cosas y si hago una aplicación mía a chorras pues luego en su data y para pos y pero por curiosidad más que nada pero yo si me encargan un proyecto no sé me aunque me dejen

poner el target en ios 17 no se me ocurre decir su data y lo siento porque siempre creo que siempre he querido coger eso pero con la experiencia que tuve con su yui me echo o la edad no sé qué habrá sido la paternidad me echo más cobarde y un proyecto cobarde y un proyecto grande y vamos aún y que tenga que usar mucho mucha base de datos y me cordata es bienvenido en ese caso pues sí y es una cosa pues que realmente a mí me da mucha pena porque considero que

es una funcionalidad excelente igual que lo de la observable pero no me sirve de nada que me lo den verde entonces aquí volvemos a lo de siempre las fechas apple no tenía que haber lanzado todo esto yo hubiera preferido que me hicieran un tip kit y lanzarlo en la beta 5 o en la 6 cuando funcione no no mira poniendo el caso de ticket ticket o sea los recursos que han destinado a la librería de tip kit o mel en la punto 1

no es una librería core de una aplicación te quiero decir si la tienes mucho mejor pero no no es algo que no es como su data por los tres tíos que tienes trabajando en eso haberles dejado en su data sabes y no haberme no sé porque ahora mira el ejemplo tip kit hay cosas que todavía no funcionan bien pues va a haber gente trabajando por lo menos hasta la siguiente beta en eso porque todavía no funciona bien y si esa gente no va a estar en su data que tiene algunas cosillas

no sé es que el empeño ese de no sé de para ese día y eso que esta vez que han retrasado yo creo que la app está de journal y no se han retrasado algo y algo también de airdrop había alguna de las cosas de airdrop que también habían habían retrasado pero no sé qué qué manía hay pues eso ya es que no no sé pero bueno que vamos a hacer nada es perfecto y desde luego hasta que no salga todo en septiembre u octubre no podemos decir nada al respecto a ver julio yo tengo una mala

noticia creo que ellos aunque saque una castaña pilonga va a salir antes porque a lo mejor sale un ipad pro nuevo en septiembre o si sacan el apple watch un nuevo apple watch probablemente tengan que sacar guachos 10 creo que era y también tendrán que sacar la versión equivalente pero es que no funciona nada es que no van a poder sacar apple watch porque el apple watch necesita que observable funcione y qué pasa si observable no funciona es que lo estoy viendo ahora el

problema de hashable por lo que estoy viendo es que al poner arroba observable en una clase todas sus propiedades se convierten en arroba observation tract que es otra macro más que lo convierte en una especie de propiedad calculada bueno pues parece ser por lo que estoy viendo que arroba observation tract no es hashable pero como la no conformación al protocolo proviene de la macro pues a ti te casca el error y tú ahí que te jodas entonces claro cómo sacas 8 es 10

cómo sacas todo lo demás si todo depende de que esta arquitectura funcione pues si apple no llega a septiembre no van a poder sacar nada se van a tener que esperar a octubre porque han puesto demasiados recursos en visión o ese a ver y probablemente esté esto esté pasando por eso por decir que estaba todos los recursos en visión o ese que hemos flipado todos colores y yo sigo flipando cada vez que vengo más cosas pero bueno sabes lo que he visto de vision creo que lo puso

también este es otro en smith que si pones la hay decoration se llama de las vistas estas que van fuera de la ventana que son como tap bar pero que va fuera de la ventana sí sí sí de corey si o algo así pues esas no respetan el scroll no tienen los si miras los seis el 6 área llega hasta abajo un día de hecho no es que no sé si fue lo fue un hilo que vi con cinco o seis errores de visión no es que a ver que está muy bien pero tenía errores muy de pero por eso a ver yo lo

que haría si fuera apple o lo que hubiera hecho no sé si lo han hecho o no es una vez has lanzado visión o ese quita a todo el mundo de visión o ese ponlo a terminar a ellos ipad etcétera etcétera y cuando ya hayas terminado eso entonces sigue con visión o ese porque visión o ese no tiene tanta prisa entre comillas ya yo lo que espero es que no lo hayan hecho ya o sea que no pase como en su día con con iphone o ese vale que era vale por debajo era mac pero luego cambiaba

bastante y ahora se han vuelto a juntar yo creo que ya que esto ya está visto visión o ese un poco que es coges ipad o ese y lo y lo transformas un poco pero tiene tiene mucho compartido pero es que a mí la interfaz me ha flipado y ojalá empiecen a meter todas esas transparencias porque hay cosas de ahora mismo hay cosas de ellos como los alets o sea los alert view o los actions y textos que tienen opciones tipo hay dos tipos de sí los que suben enteros y los que son como

un menú de opciones pues me parecen interfaces de iphone o ese 2 así que espero espero copiar varias cosas de la interfaz pues a ver veremos a ver bueno pues yo creo que podemos ir yendo al bloque final y eso pues al final ha quedado ahí una cosa interesante y que pues es esto espero que pues esto se vaya solucionando poco a poco y que al final pues todo esto no sea más que una etapa dura de que nos ponga la cara colorada porque estamos diciendo que nos digan si tanto te

quejabas pues mira aquí lo tiene los tontos estos de café pues eso mira a la que haya la boca pues eso sería el tema ok así que nada pues vamos al bloque final entonces y dónde puede encontrarte la gente fuera del podcast arturo pues a mí en el otro podcast en el que estoy que se llama videos digitales que cada día vamos nos reímos más haciéndolo pero hablamos menos de tecnología y más de la vida en general luego en twitter como bueno en x como arroba

arturo rivas a en más todo como arroba arturo rivas a arroba más todo un punto cloud que además debo ser de los pocos que ha cogido el punto cloud no sé por qué o si no tenéis toda la información sobre mí en tres subes dobles punto arturo rivas punto com y yo pues ya sabéis que podéis encontrarme como jcf munoz en todas las redes incluso en threads aunque no se puede usar porque y lo bajito que no se entere la unión europea no no es que no se puede usar desde la

unión europea la propia facebook ha bloqueado de manera de manera geolocalizada para que desde la web no puedas ni postear ni ver las respuestas ni nada sólo puedes ver el muro ya está de cuento lo que hice yo yo me lo bajé de test fly y cuando me lo he desinstalado hace poco pero cuando dijeron que habían hecho eso a mí me seguía funcionando la versión de test flight calculo que sea una versión distinta a la que mandaron para sí claro porque hicieron actualizaciones sí sí claro yo

tenía la de test flight sin actualizar y en esa podía seguir viéndolo yo llegué a publicar y llegué a contestar y tal pero ahora ya no puedo lo único que puedo hacer es ver el muro que me pone cosas que no me interesan una puñeta vale o sea el algoritmo de threads en este caso es horrible pero bueno el caso es que estoy ahí pues en x como arroba jcf munoz si x es twitter vale por si alguno algún despistado todavía vale en x como arroba jcf munoz también en linkedin como jcf

munoz barraín barra jcf munoz que sabemos que el linkedin funciona distinto también pues en mastodon como jcf munoz arroba mastodon punto social en fin pues ahí estamos en en todos lados en instagram también como jcf munoz en facebook todo vale estamos en todos lados menos en onlyfans por ahora ahí estamos así que pues eso sería un poco el tema y desde luego pues ya sabéis que aquí tenéis podéis seguirnos en café swift arroba café swift con dos fs en x porque

ahí pues tendréis las noticias de todo lo que vamos publicando las noticias de pues cositas de swift que compartimos en redes de noticias etcétera que pueden ser muy interesantes y nada y poco más y nos oímos pronto si jobs quiere y hasta ese momento recordad como decimos siempre jugar con el código hasta pronto puedes escuchar más episodios en cuando punto com la comunidad de podcast independientes en español

Episodios recientes

Programas relacionados