Я уже не один раз делился материалами про 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…
Пост на форуме про процесс релиза Swift 6.0 и эстимейты. Можно следить за апдейтами, изменениями и обсуждениями! Если вдруг очень ждете, то можете тут следить за новостями 👍
https://forums.swift.org/t/swift-6-0-release-process/70220
https://forums.swift.org/t/swift-6-0-release-process/70220
Swift Forums
Swift 6.0 Release Process
Swift 6.0 Release Process This post describes the release process, and estimated schedule for Swift 6.0. Snapshots of Swift 6.0 Downloadable snapshots of the Swift 6.0 release branch will be posted regularly as part of continuous integration testing. As…
Материал, который вряд ли интересен широкой аудитории, но он достаточно самобытный и специфичный, чтобы им не поделиться.
Если вы вдруг помните, то раньше в Xcode была возможность использовать плагины. И даже какой-то набор полезных плагинов действительно был. Позже эту опцию убрали, но автор статьи очень скучает по плагинам и попробовал всё-таки вклинить плагин обратно в Xcode.
Всякая возня «под капотом» и не очень понятные большинсту людей вещи, но если вы любительно таких занятий, то материал вам должен понравиться 🙃
Внутри есть ссылка на видео версию 🎥
https://bryce.co/xcode-plugin-loader/
Если вы вдруг помните, то раньше в Xcode была возможность использовать плагины. И даже какой-то набор полезных плагинов действительно был. Позже эту опцию убрали, но автор статьи очень скучает по плагинам и попробовал всё-таки вклинить плагин обратно в Xcode.
Всякая возня «под капотом» и не очень понятные большинсту людей вещи, но если вы любительно таких занятий, то материал вам должен понравиться 🙃
Внутри есть ссылка на видео версию 🎥
https://bryce.co/xcode-plugin-loader/
bryce.co
Modding Plugins back into Xcode
Adding plugin support to Xcode 14+, the hard way
Если у вас в приложении есть куски кода с completion блоками и вы хотите из другого места начать их использовать как async/await функции, то вам понадобится немного с этим повозиться.
Поможет вам в этом такая вещь, как
Суть в том, что вы оборачиваете вызов функции с completion блоком в этот самый
В статье всё подробно описано и с примером. Сверху (над заголовком) есть ссылка на похожую статью, но для кейов, когда еще и exception хотите выбросить.
P.S. Если ваш код с completion блоками написан на Objective-C, то из Swift кода вам по умолчанию будет доступен вызов через async/await, а вот для Swift кода нужна такая обертка!
https://www.hackingwithswift.com/quick-start/concurrency/how-to-use-continuations-to-convert-completion-handlers-into-async-functions
Поможет вам в этом такая вещь, как
continuation
.Суть в том, что вы оборачиваете вызов функции с completion блоком в этот самый
continuation
и дальше просто возвращаете значение из completion блока.В статье всё подробно описано и с примером. Сверху (над заголовком) есть ссылка на похожую статью, но для кейов, когда еще и exception хотите выбросить.
P.S. Если ваш код с completion блоками написан на Objective-C, то из Swift кода вам по умолчанию будет доступен вызов через async/await, а вот для Swift кода нужна такая обертка!
https://www.hackingwithswift.com/quick-start/concurrency/how-to-use-continuations-to-convert-completion-handlers-into-async-functions
Hacking with Swift
How to use continuations to convert completion handlers into async functions - a free Swift Concurrency by Example tutorial
Learn Swift coding for iOS with these free tutorials
This media is not supported in your browser
VIEW IN TELEGRAM
Наверняка вы используете в своем проекте много сторонних библиотек.
И вряд ли вы часто обращаете внимание, но в основном они все идут с какой-то лицензией. В основном это MIT лицензия. Суть в том, что в этой лицензии прописано, что вы бесплатно можете использовать эту библиотечку, но в свою очередь обязутесь (грубо говоря) рассказывать о том, что используете эту библиотеку в своем приложении.
Конечно, это всё размыто и вряд ли у вас будут проблемы по этому поводу, но если вдруг, вы захотите, чтобы в настройках вашего приложения появился такой замечательный пункт, который расскажет о всех SDK, что вы используете, и о всех их лицензиях, то вот статья о том, как это сделать.
Я очень сомневаюсь, что вы этим займетесь, но хотя бы знать, что так можно сделать - уже неплохо 🙃
СПОЙЛЕР: это совсем не сложно 👍
https://www.avanderlee.com/workflow/third-party-libraries-acknowledgments-swift-packages/
И вряд ли вы часто обращаете внимание, но в основном они все идут с какой-то лицензией. В основном это MIT лицензия. Суть в том, что в этой лицензии прописано, что вы бесплатно можете использовать эту библиотечку, но в свою очередь обязутесь (грубо говоря) рассказывать о том, что используете эту библиотеку в своем приложении.
Конечно, это всё размыто и вряд ли у вас будут проблемы по этому поводу, но если вдруг, вы захотите, чтобы в настройках вашего приложения появился такой замечательный пункт, который расскажет о всех SDK, что вы используете, и о всех их лицензиях, то вот статья о том, как это сделать.
Я очень сомневаюсь, что вы этим займетесь, но хотя бы знать, что так можно сделать - уже неплохо 🙃
СПОЙЛЕР: это совсем не сложно 👍
https://www.avanderlee.com/workflow/third-party-libraries-acknowledgments-swift-packages/
Наверное, те, кто активно пользуется SwiftUI, знают про Preview macro.
Это такая штука, которая даже в пустом проекте на SwiftUI внизу файла с ContentView есть. Она используется, чтобы делать превьюшки (и так было ясно, но всё же) справа в Xcode.
И то, что она юзается для SwiftUI вряд ли секрет, но многие, предположу, не знали, что такое можно даже с UIKit использовать. Ну и с AppKit тоже.
И еще этот макрос умеет немного параметров на вход принимать.
В общем вот официальная дока Apple, где они чуть подробнее про этот макрос (и инструмент для превью в целом) рассказывают и показывают 👍
https://developer.apple.com/documentation/xcode/previewing-your-apps-interface-in-xcode
Это такая штука, которая даже в пустом проекте на SwiftUI внизу файла с ContentView есть. Она используется, чтобы делать превьюшки (и так было ясно, но всё же) справа в Xcode.
И то, что она юзается для SwiftUI вряд ли секрет, но многие, предположу, не знали, что такое можно даже с UIKit использовать. Ну и с AppKit тоже.
И еще этот макрос умеет немного параметров на вход принимать.
В общем вот официальная дока Apple, где они чуть подробнее про этот макрос (и инструмент для превью в целом) рассказывают и показывают 👍
https://developer.apple.com/documentation/xcode/previewing-your-apps-interface-in-xcode
Apple Developer Documentation
Previewing your app’s interface in Xcode | Apple Developer Documentation
Iterate designs quickly and preview your apps’ displays across different Apple devices.
Очень содержательный материал про Optional-ы в Swift-е!
Опытные разработчики вряд ли найдут много нового, но новичкам точно будет полезно.
Кстати, какую-то часть из того, что разбирается в статье, часто спрашивают на собеседованиях, так что ознакомиться точно стоит.
Если коротко, то автор рассказывает о том, что такое Optional-ы, что представляют из себя «под капотом», как их использовать, какие последствия есть 👍
https://www.avanderlee.com/swift/optionals-in-swift-explained-5-things-you-should-know/
Опытные разработчики вряд ли найдут много нового, но новичкам точно будет полезно.
Кстати, какую-то часть из того, что разбирается в статье, часто спрашивают на собеседованиях, так что ознакомиться точно стоит.
Если коротко, то автор рассказывает о том, что такое Optional-ы, что представляют из себя «под капотом», как их использовать, какие последствия есть 👍
https://www.avanderlee.com/swift/optionals-in-swift-explained-5-things-you-should-know/
SwiftLee
Optionals in Swift explained: 5 things you should know
Optionals in Swift can be unwrapped (!) in multiple ways. As it's defined as an enum you can do more advanced implementations as well.
Разрабатывая приложение, наверняка вы много думали о том, что делать с оттоком пользователей.
Состав пишет, что в AppMetrica добавили предикты LTV и оттока, которые помогают сразу отследить lifetime value для оптимизации рекламы и придумать, как уменьшить отток пользователей. Предиктивная модель работает, кстати, на основе ML-технологии и сама адаптируется под аудиторию!
Состав пишет, что в AppMetrica добавили предикты LTV и оттока, которые помогают сразу отследить lifetime value для оптимизации рекламы и придумать, как уменьшить отток пользователей. Предиктивная модель работает, кстати, на основе ML-технологии и сама адаптируется под аудиторию!
Sostav
В AppMetrica добавили инструмент прогнозирования LTV и оттока
Он позволит маркетологам оптимизировать рекламные кампании