Typed throws в Swift 6.0
Еще одно quality of life улучшение в Swift 6 – возможность в явном виде указать тип ошибки, которую может выбросить функция. При этом вы можете продолжать писать код как и раньше, не указывая конкретный тип – компилятор сам приведет его к
Еще одно quality of life улучшение в Swift 6 – возможность в явном виде указать тип ошибки, которую может выбросить функция. При этом вы можете продолжать писать код как и раньше, не указывая конкретный тип – компилятор сам приведет его к
any Error
.Как писать тесты на утечки памяти
Возможность генерировать граф потребления памяти вместе с прогоном UI тестов появилась еще в Xcode 13. В статье разбирается, как с ее помощью можно автоматически отлавливать утечки памяти на CI.
Возможность генерировать граф потребления памяти вместе с прогоном UI тестов появилась еще в Xcode 13. В статье разбирается, как с ее помощью можно автоматически отлавливать утечки памяти на CI.
www.polpiella.dev
How to automatically detect memory leaks on CI/CD using UI tests
Learn how to automatically detect memory leaks in your Apple apps using UI tests and Xcode's XCTest framework.
Conditional брейкпойнты могут замедлять работу приложения
Отличная история дебага неочевидной проблемы с перфомансом, в которой сам дебаггер и оказался главным виновником.
Отличная история дебага неочевидной проблемы с перфомансом, в которой сам дебаггер и оказался главным виновником.
Twocentstudios
Reminder: Conditional Breakpoints are Slow
Как не надо использовать DeviceCheck Framework
DeviceCheck фреймворк дает возможность записать произвольную информацию размером в два бита на приложение. Эта информация будет сохраняться между всеми переустановками приложения, стиранием данных и даже при смене владельцев телефона. В статье рассказывается, как из-за того, что Snapchat использовал эти два бита, чтобы сохранять информацию о статусе бана пользователя, новый владелец айфона не мог пользоваться их приложением.
DeviceCheck фреймворк дает возможность записать произвольную информацию размером в два бита на приложение. Эта информация будет сохраняться между всеми переустановками приложения, стиранием данных и даже при смене владельцев телефона. В статье рассказывается, как из-за того, что Snapchat использовал эти два бита, чтобы сохранять информацию о статусе бана пользователя, новый владелец айфона не мог пользоваться их приложением.
Finnvoorhees
Apple Repaired My iPhone Screen, but Now My Social Media Account Is Banned
Как держать версии зависимостей актуальными
👉Назначаем ответственного за каждый из уже добавленных пакетов. Роль ответственного – обновлять его версии, когда они выходят.
👉С помощью пакета swift-outdated следим на CI за появлением новых версий.
👉Если новая версия появляется, пишем об этом в Slack и меншним ответственного.
👉Если внезапно у какого-то пакета нет ответственного, кидаем ошибку.
👉Назначаем ответственного за каждый из уже добавленных пакетов. Роль ответственного – обновлять его версии, когда они выходят.
👉С помощью пакета swift-outdated следим на CI за появлением новых версий.
👉Если новая версия появляется, пишем об этом в Slack и меншним ответственного.
👉Если внезапно у какого-то пакета нет ответственного, кидаем ошибку.
Alejandro M. P.
Swift Package Manager Dependency Owners | Alejandro M. P.
In my team, one of the things we always make sure of is keeping our dependencies up to date. We rarely add a dependency without a really good reason, and when we do, we assign an owner who is responsible for keeping it up to date.
EditorConfig в Xcode 16
В Xcode 16 появилась возможность программно задавать настройки редактора, которые зависят от текущего открытого проекта. Например, в одном проекте максимальная длина строки кода может быть 120 символов, а в другом – без ограничений.
В Xcode 16 появилась возможность программно задавать настройки редактора, которые зависят от текущего открытого проекта. Например, в одном проекте максимальная длина строки кода может быть 120 символов, а в другом – без ограничений.
Большой доклад про стратегию автотестирования iOS приложений
Михаил Рубанов, статьями которого я тут регулярно делюсь, сделал классный доклад про различные виды автотестов в iOS: чем различаются, как сочетать, и как выбрать правильную стратегию покрытия ими именно для вашего проекта.
Михаил Рубанов, статьями которого я тут регулярно делюсь, сделал классный доклад про различные виды автотестов в iOS: чем различаются, как сочетать, и как выбрать правильную стратегию покрытия ими именно для вашего проекта.
YouTube
QA GURU Михаил Рубанов «Стратегия автотестирования для iOS приложений»
00:00 - Начало
00:35 - Покрытие тестами крупного проекта
03:23 - Виды тестов
8:30 - UI-тесты
14:00 - Интеграционные/Компонентные тесты
25:45 - Снепшот-тестирование
31:00 - Скриншот-тесты
42:50 - Юнит-тесты
47:57 - Разработка через тестирование
56:00 - Вопросы…
00:35 - Покрытие тестами крупного проекта
03:23 - Виды тестов
8:30 - UI-тесты
14:00 - Интеграционные/Компонентные тесты
25:45 - Снепшот-тестирование
31:00 - Скриншот-тесты
42:50 - Юнит-тесты
47:57 - Разработка через тестирование
56:00 - Вопросы…
Как обучить команду SwiftUI
Команда, решившая переехать с UIKit на SwiftUI, делится опытом системного подхода к переезду. До того, как сесть за масштабный рефакторинг, ребята организовали полноценное обучение всей команды, в основе которого решало совместное решение близких к реальным задач.
Команда, решившая переехать с UIKit на SwiftUI, делится опытом системного подхода к переезду. До того, как сесть за масштабный рефакторинг, ребята организовали полноценное обучение всей команды, в основе которого решало совместное решение близких к реальным задач.
Хабр
Как мы соединили обучение с рабочими задачами и не остались в пустой аудитории. Опыт подготовки команды к SwiftUI
Сочетать учёбу и работу в IT – задача, мягко говоря, непростая. Даже если вы только ходите на занятия и делаете «домашку». А уж если вы захотите сами организовать обучение – сложности будут расти в...
Роадмап Vapor 5
Vapor – один из основных серверных фреймворков на Swift. Команда опубликовала роадмап на следующую мажорную версию, первую альфу которой хотят выпустить вместе с Swift 6. Ключевое изменение, конечно, полный переезд на Swift Concurrency, но помимо него есть и другие интересные планы.
Vapor – один из основных серверных фреймворков на Swift. Команда опубликовала роадмап на следующую мажорную версию, первую альфу которой хотят выпустить вместе с Swift 6. Ключевое изменение, конечно, полный переезд на Swift Concurrency, но помимо него есть и другие интересные планы.
The Vapor Blog
The Future of Vapor | The Vapor Blog
Discussing what the future holds for Vapor
Server-side Swift Meetup #3
В продолжение темы Swift на сервере, ловите ссылку на следующий митап от команды, занимающейся его развитием. В программе:
👉Swift и WebAssembly
👉Подготовка проектов к Swift 6
📆Митап пройдет 17 сентября
В продолжение темы Swift на сервере, ловите ссылку на следующий митап от команды, занимающейся его развитием. В программе:
👉Swift и WebAssembly
👉Подготовка проектов к Swift 6
📆Митап пройдет 17 сентября
YouTube
Swift Server Side Meetup #03
Announcing the Third Swift Server-Side Meetup: APJ Edition
This gathering is designed for Swift developers and enthusiasts interested in server-side development. We'll delve into the latest trends, techniques, and best practices in the Swift ecosystem.…
This gathering is designed for Swift developers and enthusiasts interested in server-side development. We'll delve into the latest trends, techniques, and best practices in the Swift ecosystem.…
Распознаем скриншоты банковских приложений
Классный подход к решению задачи получения информации о выбранных категориях кэшбека в разных банках. Вместо того, чтобы пытаться вытащить нужную информацию по API, которого может и не быть, автор статьи использует Vision фреймворк, скармливая ему скриншоты приложений. И работает!
Классный подход к решению задачи получения информации о выбранных категориях кэшбека в разных банках. Вместо того, чтобы пытаться вытащить нужную информацию по API, которого может и не быть, автор статьи использует Vision фреймворк, скармливая ему скриншоты приложений. И работает!
Переезд с CocoaPods на SwiftPM+Tuist
Недавний переход CocoaPods в режим поддержки послал еще один сигнал всем сомневающимся – пора уже переходить на SwiftPM. А одновременно с этим можно посмотреть и на Tuist, который поможет проще реализовать модульность, и уйти от конфиктов в файле проекта. Да и вообще, последнее время они релизят кучу классных фичей.
Недавний переход CocoaPods в режим поддержки послал еще один сигнал всем сомневающимся – пора уже переходить на SwiftPM. А одновременно с этим можно посмотреть и на Tuist, который поможет проще реализовать модульность, и уйти от конфиктов в файле проекта. Да и вообще, последнее время они релизят кучу классных фичей.
Хабр
От Cocoapods к Tuist+SPM быстрыми шагами
Не так давно прогремела новость , что Cocoapods переходит в режим поддержки. В связи с этим встал вопрос, что дальше. В начале мы склонялись к чисто Swift Package Manager, но потом пришло понимание,...
libcimbar – протокол передачи данных на QR кодах
Не знаю, зачем вам этот проект, но выглядит как клевая идея для основы какого-нибудь пет-проекта! На базе анимированного QR кода реализована передача данных со скоростью около 100 кбит/сек.
Не знаю, зачем вам этот проект, но выглядит как клевая идея для основы какого-нибудь пет-проекта! На базе анимированного QR кода реализована передача данных со скоростью около 100 кбит/сек.
Релиз Hummingbird 2
В последнее время количество новостей вокруг серверного Swift какое-то зашкаливающее. На этот раз речь про мажорный релиз еще одного сравнительно популярного фреймворка. Ключевое изменение, конечно же, Swift Concurrency. Полные релиз ноуты можно прочитать тут.
В последнее время количество новостей вокруг серверного Swift какое-то зашкаливающее. На этот раз речь про мажорный релиз еще одного сравнительно популярного фреймворка. Ключевое изменение, конечно же, Swift Concurrency. Полные релиз ноуты можно прочитать тут.
hummingbird.codes
Hummingbird 2
Version 2.0 of Hummingbird - the swift server framework has been released.
Используем Cursor для iOS разработки
Cursor – хайповая IDE, позиционирующая себя как AI-centric. Если вам интересно попробовать разрабатывать в ней под iOS, то в статье рассказывается, как с помощью библиотеки Inject можно обойтись без необходимости работать с симулятором через Xcode.
Cursor – хайповая IDE, позиционирующая себя как AI-centric. Если вам интересно попробовать разрабатывать в ней под iOS, то в статье рассказывается, как с помощью библиотеки Inject можно обойтись без необходимости работать с симулятором через Xcode.
Rudrank Riyam
Exploring Indie Life: Reducing Friction with Cursor
Boost your iOS development with Cursor AI editor! Reduce context-switching, overcome Xcode limitations, and ship faster. Learn how to streamline your workflow, use hot reloading, and run simulators directly from Cursor. Discover practical tips and aliases…
Обновление Apple Design Resources
С выходом новых девайсов обновились и UI библиотеки Apple для Figma и Sketch. А главное, конечно – 10 новых сочетаний корпусов и ремешков для часов!
С выходом новых девайсов обновились и UI библиотеки Apple для Figma и Sketch. А главное, конечно – 10 новых сочетаний корпусов и ремешков для часов!
Как использовать Morphology для строк без чисел
Morphology – набор API в Foundation, которые позволяют правильным образом склонять ваши строки. Например, указывать правильное окончание у "You have X messages" в зависимости от значения Х.
При этом задача отображения строки "You have unread messages", которая не включает в себя Х, гораздо менее тривиальна.
Morphology – набор API в Foundation, которые позволяют правильным образом склонять ваши строки. Например, указывать правильное окончание у "You have X messages" в зависимости от значения Х.
При этом задача отображения строки "You have unread messages", которая не включает в себя Х, гораздо менее тривиальна.
Lickability
Morphology in Swift – Lickability
A guide to automatic numberless pluralization
История странного креша Core Data
Замечательная история одного EXC_BAD_ACCESS, который появлялся, когда менялось значение одного из свойств entity в нужном для этого контексте. Причина –название изменяемого атрибута начиналось со слова new .
Замечательная история одного EXC_BAD_ACCESS, который появлялся, когда менялось значение одного из свойств entity в нужном для этого контексте. Причина –
nemecek.be
The weirdest Core Data crash I have seen
Careful how you name your attributes...
Релиз Swift 6
Swift 6 наконец-то вышел! Все фичи мы уже сто раз успели обсудить, но, если вы это пропустили, официалтный блогпост – хороший способ освежить память. Из интересных наблюдений – и в релизном твите, и в блогпосте Swift активно позиционируется не как мобильный язык, а как кроссплатформенный язык общего назначения, позволяющий писать быстрый и безопасный код.
Swift 6 наконец-то вышел! Все фичи мы уже сто раз успели обсудить, но, если вы это пропустили, официалтный блогпост – хороший способ освежить память. Из интересных наблюдений – и в релизном твите, и в блогпосте Swift активно позиционируется не как мобильный язык, а как кроссплатформенный язык общего назначения, позволяющий писать быстрый и безопасный код.
Swift.org
Announcing Swift 6
We’re delighted to announce the general availability of Swift 6. This is a major new release that expands Swift to more platforms and domains.
SwiftPM Snippets
Сниппеты появились еще в Swift 5.7, но используются они редко, а официальной документации мало, поэтому статья – на вес золота. Автор разбирает, как добавлять сниппеты в пакеты, встраивать их в DocC документацию, и использовать кучу их малоизвестных фичей.
Сниппеты появились еще в Swift 5.7, но используются они редко, а официальной документации мало, поэтому статья – на вес золота. Автор разбирает, как добавлять сниппеты в пакеты, встраивать их в DocC документацию, и использовать кучу их малоизвестных фичей.