This media is not supported in your browser
VIEW IN TELEGRAM
Небольшой материал для всех, кто использует SwiftUI и хочет чуть упросить работу с кнопками и сделать их (кнопки, как класс Button в смысле) асинхронными.
Автор рассказывает (и показывает) о своей небольшой библиотечке для асинхронных кнопок.
https://blog.thomasdurand.fr/story/2024-01-14-asynchronous-swiftui-buttons
Автор рассказывает (и показывает) о своей небольшой библиотечке для асинхронных кнопок.
https://blog.thomasdurand.fr/story/2024-01-14-asynchronous-swiftui-buttons
Одна из проблем SwiftUI (а точнее плохого использования SwiftUI) - частый ререндер.
Уже не так мало, а будет еще больше, статей на тему того, как же правильно использовать SwiftUI, чтобы избежать частых ререндеров. Из-за которых падает фпс, греются и быстрее разряжаются девайсы и много чего еще.
Вот хорошая статья, где автор описывает основные принципы, которым нужно следовать, чтобы избегать ререндера вьюшек в SwiftUI. И помимо описания этих принцпипов есть еще и конкретные объяснения и причины, почему нужно делать так! 👍
https://medium.com/@shashidj206/how-to-avoid-repeating-swiftui-view-updates-ec1fce0349a9
Уже не так мало, а будет еще больше, статей на тему того, как же правильно использовать SwiftUI, чтобы избежать частых ререндеров. Из-за которых падает фпс, греются и быстрее разряжаются девайсы и много чего еще.
Вот хорошая статья, где автор описывает основные принципы, которым нужно следовать, чтобы избегать ререндера вьюшек в SwiftUI. И помимо описания этих принцпипов есть еще и конкретные объяснения и причины, почему нужно делать так! 👍
https://medium.com/@shashidj206/how-to-avoid-repeating-swiftui-view-updates-ec1fce0349a9
Medium
How to Avoid Repeating SwiftUI View Updates.
In SwiftUI, view updates can sometimes occur more frequently than necessary, leading to unnecessary re-rendering and performance issues.
Изучаем SwiftUI дальше!
О View в SwiftUI и о том, как сохранить полиморфизм! Очень важная штука вообще-то говоря.
https://medium.com/the-swift-cooperative/swiftui-view-models-a-polymorphic-approach-8911a992892b
О View в SwiftUI и о том, как сохранить полиморфизм! Очень важная штука вообще-то говоря.
https://medium.com/the-swift-cooperative/swiftui-view-models-a-polymorphic-approach-8911a992892b
Medium
SwiftUI View Models: A Polymorphic Approach
Photo by Possessed Photography on Unsplash
И еще про SwiftUI!
Про сравнение использования view и модификаторов на примере простой вьюшки с текстом и картинкой.
https://swiftbysundell.com/articles/swiftui-views-versus-modifiers/
Про сравнение использования view и модификаторов на примере простой вьюшки с текстом и картинкой.
https://swiftbysundell.com/articles/swiftui-views-versus-modifiers/
Swift by Sundell
SwiftUI views versus modifiers | Swift by Sundell
What’s really the difference between building a piece of UI as a view versus a modifier, and how to choose between those two solutions?
Несколько дней назад Apple анонсировали большие изменения для EU региона. Информация в целом будет полезна всем, кто дистрибьютит свои приложения.
Речь о том, что станут доступны альтернативные сторы, способы оплаты и всё связанное с этим 😱
Пока выглядит немного туманно и не до конца понятно, как это будет выглядеть, но в любом случае, лёд тронулся. Будем наблюдать за происходящим с интересом!
https://www.apple.com/newsroom/2024/01/apple-announces-changes-to-ios-safari-and-the-app-store-in-the-european-union/
Речь о том, что станут доступны альтернативные сторы, способы оплаты и всё связанное с этим 😱
Пока выглядит немного туманно и не до конца понятно, как это будет выглядеть, но в любом случае, лёд тронулся. Будем наблюдать за происходящим с интересом!
https://www.apple.com/newsroom/2024/01/apple-announces-changes-to-ios-safari-and-the-app-store-in-the-european-union/
Apple Newsroom
Apple announces changes to iOS, Safari, and the App Store in the European Union
Apple announced changes to iOS, Safari, and the App Store impacting developers’ apps in the EU to comply with the DMA.
Небольшой лайфхак для всех, кто использует SwiftUI.
Ловите кусок кода, который поможет вам понять, когда отрисовка вашей вьюшки занимает слишком много времени или просто висит.
В общем полезный кусок кода, который поможет вам в дебагинге.
https://wadetregaskis.com/swiftui-main-thread-hang-detector/
Ловите кусок кода, который поможет вам понять, когда отрисовка вашей вьюшки занимает слишком много времени или просто висит.
В общем полезный кусок кода, который поможет вам в дебагинге.
https://wadetregaskis.com/swiftui-main-thread-hang-detector/
This media is not supported in your browser
VIEW IN TELEGRAM
Я не знаю зачем вам это, но я уверен, что пригодится!
Репозиторий с примером использования библиотечки
Библиотека для создания таких вот тенюшек под ваши клики(gesture). Удобно снять какое-нибудь демо видео для вашей новой фичи, например 👍
https://github.com/adamwulf/HandShadowsExample
Репозиторий с примером использования библиотечки
HandShadows
.Библиотека для создания таких вот тенюшек под ваши клики(gesture). Удобно снять какое-нибудь демо видео для вашей новой фичи, например 👍
https://github.com/adamwulf/HandShadowsExample
Я уже не один раз делился материалами про Swift Concurrency. В том числе и видео с WWDC 🎥
И я надеюсь, что базовые сценарии все уже разобрали и понимают как использовать, поэтому вот материал про не самые частые в работе кейсы, но очень важные. И когда такая задача появляется, важно сделать её максимально правильно.
Я про одновременную обработку N-ного количества запросов, либо с ожиданием друг друга, либо с полной параллельностью и обработкой одного ответа для всех. И про проблемы, которые могут возникнуть в процессе.
В общем это всякие загрузки картинок, отправка пачки запросов на сервер и так далее.
Материал полностью покрывает эту тему и помогает подобрать нужное решение. Ну или провалидировать всё ли у вас правильно реализовано 🔥
https://developer.apple.com/videos/play/wwdc2021/10134
И я надеюсь, что базовые сценарии все уже разобрали и понимают как использовать, поэтому вот материал про не самые частые в работе кейсы, но очень важные. И когда такая задача появляется, важно сделать её максимально правильно.
Я про одновременную обработку N-ного количества запросов, либо с ожиданием друг друга, либо с полной параллельностью и обработкой одного ответа для всех. И про проблемы, которые могут возникнуть в процессе.
В общем это всякие загрузки картинок, отправка пачки запросов на сервер и так далее.
Материал полностью покрывает эту тему и помогает подобрать нужное решение. Ну или провалидировать всё ли у вас правильно реализовано 🔥
https://developer.apple.com/videos/play/wwdc2021/10134
Apple Developer
Explore structured concurrency in Swift - WWDC21 - Videos - Apple Developer
When you have code that needs to run at the same time as other code, it's important to choose the right tool for the job. We'll take you...
Наверное, не все знают, но на симуляторе можно сделать запись экрана. Например, чтобы сделать классную превьюшку для стора, где пройдетесь по основным фичам вашего приложения.
Но еще это видео должно соответствовать некоторым требованиям Apple. По длине и прочему.
Вот небольшой материал про это, где показывается, как это сделать и также, при помощи RocketSim (много постов про неё было) оптимизируется под требования Apple. Например, корректирует аудио дорожку, устанавливает правильное разрешение и так далее.
В общем в некоторых (наверное, достаточно редких, но всё же) случаях может быть полезно.
https://www.avanderlee.com/workflow/capture-ios-simulator-video-app-preview/
Но еще это видео должно соответствовать некоторым требованиям Apple. По длине и прочему.
Вот небольшой материал про это, где показывается, как это сделать и также, при помощи RocketSim (много постов про неё было) оптимизируется под требования Apple. Например, корректирует аудио дорожку, устанавливает правильное разрешение и так далее.
В общем в некоторых (наверное, достаточно редких, но всё же) случаях может быть полезно.
https://www.avanderlee.com/workflow/capture-ios-simulator-video-app-preview/
SwiftLee
App Preview Videos Capturing using the Xcode simulator
Create App Preview videos using App Store Connect's required specifications without the need of conversions using tools like ffmpeg.
Если вы еще не переехали на async/await, то, наверняка, используете completion блоки.
Вот материал о том, как сделать эти блоки намного безопаснее! Внутри есть и видео материал, если вам так удобнее 👍
https://www.swiftwithvincent.com/blog/how-to-make-a-completionhandler-much-safer
Вот материал о том, как сделать эти блоки намного безопаснее! Внутри есть и видео материал, если вам так удобнее 👍
https://www.swiftwithvincent.com/blog/how-to-make-a-completionhandler-much-safer
Swift with Vincent
How to make a completionHandler much safer — Swift with Vincent
You’re more of a video kind of person? I’ve got you covered! Here’s a video with the same content than this article 🍿
Если вы используете Swift Concurrency, то наверняка приходится (или еще придется) работать с Actors.
Вот материал про то, какие проблемы с ними могут быть и про небольшие фикши по работе с Actors!
https://alexdremov.me/swift-actors-common-problems-and-tips/
Вот материал про то, какие проблемы с ними могут быть и про небольшие фикши по работе с Actors!
https://alexdremov.me/swift-actors-common-problems-and-tips/
Alex Dremov
Swift Actors — Common Problems and Tips | Alex Dremov
Swift actors are a powerful tool. However, it is also quite a sophisticated concept that requires deep understanding to write bug-free code
Возможно, многие уже знают или хотя бы что-то слышали про Copilot. Это такая тулза, которая при помощи AI помогает вам писать код. То есть дает готовые куски, помогает дописать и так далее. За качество этого кода ничего сказать не могу, но многим вроде как нравится.
Если вдруг хотите интегрировать себе эту штуку (может хотя бы попробовать и немного побаловаться) в iOS проект, то вот подробная статья о том, как это сделать!
https://medium.com/globant/boost-your-productivity-integrate-github-copilot-with-xcode-94a0ee74b961
Если вдруг хотите интегрировать себе эту штуку (может хотя бы попробовать и немного побаловаться) в iOS проект, то вот подробная статья о том, как это сделать!
https://medium.com/globant/boost-your-productivity-integrate-github-copilot-with-xcode-94a0ee74b961
Medium
Boost your Productivity: Integrate GitHub Copilot with Xcode
Are you tired of writing repetitive code and wish there was an easier way to generate it? Use GitHub Copilot, an AI-powered code suggestion…
Знаете ли вы, что такое
Тут и объяснение зачем нужен этот модификатор и сразу примеры использования с результатом 👍
https://www.avanderlee.com/swiftui/scaledmetric-dynamic-type-support/
@ScaledMetric
? Даже если да, думаю этот материал будет полезен и вам.Тут и объяснение зачем нужен этот модификатор и сразу примеры использования с результатом 👍
https://www.avanderlee.com/swiftui/scaledmetric-dynamic-type-support/
SwiftLee
How to use @ScaledMetric in SwiftUI for Dynamic Type support
Support Dynamic Type in your app and use the @ScaledMetric Property Wrapper to scale numeric values proportionally.
Держите совсем уникальный материал. Про новый язык для конфигураций и конфиг файлов - Pkl (Pickle)!
Альтернатива всяким JSON, YAML и прочим.
Авторы говорят, что предыдщуие форматы не очень удобны, много где можно ошибиться, много копипасты приходится писать и так далее.
И предлагают альтернативу. А в статье подробно об этом рассказывают, хвалят и показывают.
Пока непонятно, конечно, сможет ли Pkl занять нишу, но выглядит все равно интересно 👍
https://pkl-lang.org/blog/introducing-pkl.html
Альтернатива всяким JSON, YAML и прочим.
Авторы говорят, что предыдщуие форматы не очень удобны, много где можно ошибиться, много копипасты приходится писать и так далее.
И предлагают альтернативу. А в статье подробно об этом рассказывают, хвалят и показывают.
Пока непонятно, конечно, сможет ли Pkl занять нишу, но выглядит все равно интересно 👍
https://pkl-lang.org/blog/introducing-pkl.html
iOS.Devs
Возможно, многие уже знают или хотя бы что-то слышали про Copilot. Это такая тулза, которая при помощи AI помогает вам писать код. То есть дает готовые куски, помогает дописать и так далее. За качество этого кода ничего сказать не могу, но многим вроде как…
А вот и не совсем приятные (но вполне ожидаемые) результаты исследования качества того кода, что предлагает Copilot.
Небольшая статья с разбором этой темы и немного статистики!
https://visualstudiomagazine.com/articles/2024/01/25/copilot-research.aspx
Небольшая статья с разбором этой темы и немного статистики!
https://visualstudiomagazine.com/articles/2024/01/25/copilot-research.aspx
Visual Studio Magazine
New GitHub Copilot Research Finds 'Downward Pressure on Code Quality' -- Visual Studio Magazine
'We find disconcerting trends for maintainability.'
Всем, кто изучает SwiftUI будет очень полезно разобраться в одной из основных тем - Alignment. То есть всякие основы верстки и выравнивания компонентов.
Вот хороший материал с коротеньким текстовым описанием и большим видео-материалом с примерами кода и результата! Рекомендую посмотреть видео 🔥
https://www.hackingwithswift.com/books/ios-swiftui/alignment-and-alignment-guides
Вот хороший материал с коротеньким текстовым описанием и большим видео-материалом с примерами кода и результата! Рекомендую посмотреть видео 🔥
https://www.hackingwithswift.com/books/ios-swiftui/alignment-and-alignment-guides
Hacking with Swift
Alignment and alignment guides - a free Hacking with iOS: SwiftUI Edition tutorial
Learn Swift coding for iOS with these free tutorials
Очень (прямо очень) крутой ресурс по тому, как работает верстка в SwiftUI!
Сайт с разным набором штук связанных с версткой в SwiftUI, где можно зайти и на конкретном примере посмотреть код и результат работы. Подвигать ползунки, посмотреть, как меняется верстка и так далее.
Выглядит очень классно и ресурс дальше развивается, так что следите за обновлениями! 🔥
https://www.swiftuifieldguide.com/
Сайт с разным набором штук связанных с версткой в SwiftUI, где можно зайти и на конкретном примере посмотреть код и результат работы. Подвигать ползунки, посмотреть, как меняется верстка и так далее.
Выглядит очень классно и ресурс дальше развивается, так что следите за обновлениями! 🔥
https://www.swiftuifieldguide.com/
SwiftUI Field Guide
A visual guide to help explore SwiftUI
Если задумываетесь о добавлении в ваш проект нормальной системы логирования происходящего, то вот хороший материал про эпловский фреймворк
В целом статья без каких-то уникальных находок. Просто обзор инструмента с примерами использования 👍
https://useyourloaf.com/blog/xcode-console-and-unified-logging/
OSLog
!В целом статья без каких-то уникальных находок. Просто обзор инструмента с примерами использования 👍
https://useyourloaf.com/blog/xcode-console-and-unified-logging/
Use Your Loaf - iOS Development News & Tips
Xcode Console and Unified Logging
If you're still using print statements to debug your App it's time you moved to the unified OS logging framework.
Небольшой обучающий материал (с большим количеством примеров) для совсем новичков о том, что такое
https://www.avanderlee.com/swift/extensions/
Extensions
и как с ними работать, в каких случаях они подходят лучше всего и так далее.https://www.avanderlee.com/swift/extensions/
SwiftLee
Extensions in Swift: How and when to use them
Extensions in Swift allow you to extend classes, structs, protocols, and enumerations, even when you don't have access to the source code.
Хорошая статья о том, как работать с типизированными ошибками в Swift, когда вы используете throw и разный набор ошибок.
Возможно, у вас есть опыт работы с таким подходом в других языках и вы ничего нового не найдете, но если нет, то материал точно будет полезным. А еще он совсем коротенький, очень понятный и полезный 👍
https://www.donnywals.com/designing-apis-with-typed-throws-in-swift/
Возможно, у вас есть опыт работы с таким подходом в других языках и вы ничего нового не найдете, но если нет, то материал точно будет полезным. А еще он совсем коротенький, очень понятный и полезный 👍
https://www.donnywals.com/designing-apis-with-typed-throws-in-swift/
Donny Wals
Designing APIs with typed throws in Swift – Donny Wals
When Swift 2.0 added the keyword to the language, folks were somewhat divided on its usefulness. Some people preferred designing their APIs with an (at the time) unofficial implementation of the type…