iOS.Devs
5.43K subscribers
88 photos
3 videos
1 file
749 links
Всё самое актуальное из мира iOS разработки. По вопросам @suriksarkisyan

При поддержке qonversion.io

Чат: @ios_camp_chat.
Download Telegram
Хорошая статья о том, как работать с типизированными ошибками в Swift, когда вы используете throw и разный набор ошибок.
Возможно, у вас есть опыт работы с таким подходом в других языках и вы ничего нового не найдете, но если нет, то материал точно будет полезным. А еще он совсем коротенький, очень понятный и полезный 👍
https://www.donnywals.com/designing-apis-with-typed-throws-in-swift/
Пост на форуме про процесс релиза Swift 6.0 и эстимейты. Можно следить за апдейтами, изменениями и обсуждениями! Если вдруг очень ждете, то можете тут следить за новостями 👍
https://forums.swift.org/t/swift-6-0-release-process/70220
Материал, который вряд ли интересен широкой аудитории, но он достаточно самобытный и специфичный, чтобы им не поделиться.
Если вы вдруг помните, то раньше в Xcode была возможность использовать плагины. И даже какой-то набор полезных плагинов действительно был. Позже эту опцию убрали, но автор статьи очень скучает по плагинам и попробовал всё-таки вклинить плагин обратно в Xcode.
Всякая возня «под капотом» и не очень понятные большинсту людей вещи, но если вы любительно таких занятий, то материал вам должен понравиться 🙃
Внутри есть ссылка на видео версию 🎥
https://bryce.co/xcode-plugin-loader/
Если у вас в приложении есть куски кода с completion блоками и вы хотите из другого места начать их использовать как async/await функции, то вам понадобится немного с этим повозиться.
Поможет вам в этом такая вещь, как 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
This media is not supported in your browser
VIEW IN TELEGRAM
Наверняка вы используете в своем проекте много сторонних библиотек.
И вряд ли вы часто обращаете внимание, но в основном они все идут с какой-то лицензией. В основном это 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
Очень содержательный материал про Optional-ы в Swift-е!
Опытные разработчики вряд ли найдут много нового, но новичкам точно будет полезно.
Кстати, какую-то часть из того, что разбирается в статье, часто спрашивают на собеседованиях, так что ознакомиться точно стоит.
Если коротко, то автор рассказывает о том, что такое Optional-ы, что представляют из себя «под капотом», как их использовать, какие последствия есть 👍
https://www.avanderlee.com/swift/optionals-in-swift-explained-5-things-you-should-know/
Разрабатывая приложение, наверняка вы много думали о том, что делать с оттоком пользователей.

Состав пишет, что в AppMetrica добавили предикты LTV и оттока, которые помогают сразу отследить lifetime value для оптимизации рекламы и придумать, как уменьшить отток пользователей. Предиктивная модель работает, кстати, на основе ML-технологии и сама адаптируется под аудиторию!
Если вдруг пропустили, то недавно компания Apple выпустила анонс, где указала, что все апдейты приложений с 1 мая обязаны «объяснить» использование той или иной API в своем проекте. И все third-party libraries в вашем проекте также должны это сделать.
Подробнее читайте в посте и переходите по вложенным ссылкам.
https://developer.apple.com/news/?id=3d8a9yyh
Многие из вас (надеюсь) знают, что мы в Qonversion занимаемся всем, что связано с приложениями и сервисами, которые монетизируют свой продукт через in-app purchases.
Так вот у нас есть классные новости для стартапов и тех, кто только начинает развивать свое мобильное приложение.
Мы в Qonversion запустили программу, которая дает возможность получить бесплатно почти все самые классные фичи максимального тарифа, в том числе А/Б тесты и аналитику Apple Search Ads.

Подать заявку на стартап программу можно по этой ссылке!

По условиям все просто:
1. Нужно, чтобы приложение было уже активным и опубликованным в сторе
2. Выручка до $10k в месяц (MTR)
3. Вы должны быть новым клиентом Qonversion
Наверняка многие слышали про Test-Driven Development (тот самый TDD). Но вряд ли многие его используют. Так вот если вы вдруг захотите его начать использовать, или вам просто интересно чуть подробнее разобраться в этой теме, то вот неплохой материал с примерами!
https://www.avanderlee.com/workflow/test-driven-development-tdd-for-bug-fixes-in-swift/
Классная статья, где автор рассказывает о том, что постоянство и последовательность в сайд проджектах всегда очень важны и приносят хороший результат! Это, кажется, и не было секретом, но тут в статье есть конкретные примеры и даже графики!
А сама статья на две минуты чтения, так что можно быстро ознакомиться 👍
https://www.avanderlee.com/optimization/the-power-of-consistency-in-side-projects/
Если вы используете SwiftUI, то наверняка используете и .onTapGesture(). Вот статья, где автор говорит, что с этим нужно быть осторожнее. И приводит несколько примеров, где это может привести к проблемам 🤔
https://www.swiftwithvincent.com/blog/be-careful-when-using-ontapgesture
Очередной хак о том, как ускорить время билда в Swift проекте. На этот раз при помощи @_silgen_name.
Конечно, любое искорение билда будет не лишним, но хз насколько много профита с этого можно получить.
Ну и стоит обратить внимание на одно предложение из статьи: Forward-declaring Swift functions allow you to do all sorts of crazy things, but remember, this is not an official feature of the language.
https://swiftrocks.com/using-silgenname-to-call-private-swift-code
Если вам вдруг очень нужно было на SwiftUI научиться ловить нажатия разных кнопок на клавиатуре по типу return/shift/и так далее, то вот материал об этом ⌨️
Больше актуально для разработки приложений под iPad, наверное, но вдруг и для iPhone вам нужно!
https://www.avanderlee.com/swiftui/key-press-events-detection/
Если вы используете DocC, то уже, наверное, знаете насколько он хорош.
Но в Xcode 15 он стал даже еще лучше.
Одно из основных изменений - теперь DocC умеет правильно показывать и давать ссылки на сущности, которые вы расширяете через Extension. Полностью правильно обработанные блоки с возможностью клика и перехода на детальную информацию по ним.
В общем если еще не используете DocC, то хотя бы попробуйте. Очень классная вещь! 👍
https://danielsaidi.com/blog/2024/03/21/how-to-link-to-native-type-extensions-in-docc
Очень интересный материал про perfromance check-и.
Автор предлагает библиотечку для написания бенчмарков, а потом это всё можно прикрутить к пул-реквестам и всегда следить за тем, не ухудшает ли ваш новый код производительность, не стал ли больше грузить cpu, как обстоят дела с потоками, памятью и так далее?
В общем на бумаге выглядит достаточно интересно. На деле пока не знаю 🤷
Ну и если это кому-то важно, то это опенсорс библиотечка! 👍
https://www.swift.org/blog/benchmarks/
Просто невероятный по качеству, объему и уникальности материал! 😱
Про текстовые редакторы от Apple!
Всё супер детально, красиво, с примерами, объяснением и вообще всем, чем возможно, о том, как устроены эти редакторы, как работают и так далее.
Большой объем, как раз за выходные можно осилить. А еще можете почитать первую часть этой статьи, ссылка внутри!
https://papereditor.app/internals