При использовании Swift Concurrency и Objective-C нужно быть максимально осторожным, при добавлении ключевого слова
async
меняется Obj-C интерфейс интерропа. "Утиная" типизация тут не видит проблемы и вызов селектора приводит к рантайм крашу. Неявная проблема и странное героическое преодоление. Именно по-этому в Objective-C было хорошим тоном при вызове селектора проверять respondstoselector. Но сам кейс разобрать интересно:WithCompletionHandler
WithCompletionHandler
как async
sendAction
что выглядит как очень хрупкий костыль, тут либо уходить в NSProxy, либо оставлять интероп синхронным а асинхронной выполнять работу внутри SwiftPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Пост о использовании CoreLocation. Казалось бы, что может быть проще. Но работа с геолокацией это одна из кроличьих нор iOS и ловушек:
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3
SwiftUI предоставляет широкий набор для декларативного описания пользовательского интерфейса. Но без должного опыта есть большая вероятность "описать" его не так как хотелось бы видеть. Для отладки рендера существуют отдельные библиотеки, но можно обойтись и подручными средствами:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Успели попробовать новые фишки Apple Intelligence? Siri теперь поддерживает прямую работу с GPT, если вначале сказать "Ask GPT", появилось приложение Image Playground, инструмент Image Wand и конечно же Genmoji
Что важно, уже можно интегрировать технологию создания AI изображений в ваши приложения, при помощи ImagePlayground. Интерфейс доступен из UIKit и SwiftUI
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Коварный подводный камень использования
throws
функций вместе с Task
. Суть проблемы в том что ошибка перехватывается Task
, а не функцией loginUser()
, это может быть не очевидным. Для того чтобы не допускать подобных ошибок лучше убирать ключевое слово throws
при переводе функции в асинхронный режим, чтобы при компиляции получать warning в тех местах, где блок catch не будет выполнен. Проверьте ваш код на такие моменты Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7