Используете ли вы платные инструменты для iOS разработки (за исключением дев аккаунта)?
Anonymous Poll
7%
Да, регулярно плачу
18%
Да, один или несколько раз что-то купил
44%
Нет, не плачу ни за что
5%
Нет, скачиваю пиратские копии
26%
Посмотреть результаты
Улучшения перфоманса в ТСА
Вышел новый релиз The Composable Architecture, в котором был сделан упор на улучшения перфоманса. В статье разбираются все проблемные места предыдущей версии архитектуры, и то, как их полечили.
Вышел новый релиз The Composable Architecture, в котором был сделан упор на улучшения перфоманса. В статье разбираются все проблемные места предыдущей версии архитектуры, и то, как их полечили.
www.pointfree.co
Improving Composable Architecture performance
The latest release of the Composable Architecture brings a number of performance improvements to its tools, and best of all, most of the changes came from collaboration with people in the TCA community! 🤗
This media is not supported in your browser
VIEW IN TELEGRAM
Анимации в SwiftUI с Accelerate и VectorArithmetic
В статье пошагово разбирается, как реализовать анимацию лавового пузыря с быстрыми вычислениями на фреймворке Accelerate.
В статье пошагово разбирается, как реализовать анимацию лавового пузыря с быстрыми вычислениями на фреймворке Accelerate.
Fixes vs Patches
Любой код содержит ошибки – баги, эксепшны, проблемы перфоманса. Глобально к их исправлению можно подойти двумя способами:
☝️Пофиксить. Найти корневую причину проблемы, понять ее, исправить поведение системы и покрыть тестами.
✌️Запатчить. Не докапываясь до причины, сделать так, чтобы нежелательное поведение в данном конкретном случае больше не повторялось.
Ни один из способов нельзя назвать абсолютно верным, все зависит от контекста. Понимание различия между ними важно, чтобы правильно документировать последствия. Это менее важно для фиксов, но очень важно для патчей – иначе, спустя год, никто не сможет разобраться в костыле, который вы оставили.
Любой код содержит ошибки – баги, эксепшны, проблемы перфоманса. Глобально к их исправлению можно подойти двумя способами:
☝️Пофиксить. Найти корневую причину проблемы, понять ее, исправить поведение системы и покрыть тестами.
✌️Запатчить. Не докапываясь до причины, сделать так, чтобы нежелательное поведение в данном конкретном случае больше не повторялось.
Ни один из способов нельзя назвать абсолютно верным, все зависит от контекста. Понимание различия между ними важно, чтобы правильно документировать последствия. Это менее важно для фиксов, но очень важно для патчей – иначе, спустя год, никто не сможет разобраться в костыле, который вы оставили.
Bas’ Blog
On Fixing vs Patching
We programmers have — most likely — all fixed a bunch of bugs in our time. That edge case that was overlooked. That out of bounds error that we thought could never occur. That early return being hit because that one thing could be nil after all. That crash…
Обновления Human Interface Guidelines для новых девайсов и iOS 16
Сразу после выхода новых устройств и версий операционных систем команда дизайна Apple выпустила много новых гайдов:
⌚️Action Button на Watch Ultra
🤝Шаринг данных и коллаборативная работа
📐Как работать с layout и safe areas
✍️Edit Menu
⤵️Pull-down Buttons
⤴️Pop-up Buttons
📝Контекстные меню
🤔Общие рекомендации по работе с любыми меню
Сразу после выхода новых устройств и версий операционных систем команда дизайна Apple выпустила много новых гайдов:
⌚️Action Button на Watch Ultra
🤝Шаринг данных и коллаборативная работа
📐Как работать с layout и safe areas
✍️Edit Menu
⤵️Pull-down Buttons
⤴️Pop-up Buttons
📝Контекстные меню
🤔Общие рекомендации по работе с любыми меню
Автоматическое оборачивание кода в closure в Xcode 14
Если в Xcode 14 выделить блок кода и нажать {, он будет завернут в closure, а курсор перенесется на ее первую строку.
Если в Xcode 14 выделить блок кода и нажать {, он будет завернут в closure, а курсор перенесется на ее первую строку.
X (formerly Twitter)
Edward Sánchez (@edwardsanchez) on X
In Xcode 14, if you select a block of text and type {, it embeds the block in a closure and puts the cursor in the beginning of the closure so you can define it. Works great for SwiftUI!.
Live Activities в Xcode 14.1 Beta
В новой Beta Xcode стал доступен фреймворк ActivityKit, а в iOS 16.1 Beta их можно потестировать. К этому случаю Apple опубликовали два гайда:
🌅Как отображать данные в Live Activity
💌Как обновлять Live Activity с помощью пушей
В новой Beta Xcode стал доступен фреймворк ActivityKit, а в iOS 16.1 Beta их можно потестировать. К этому случаю Apple опубликовали два гайда:
🌅Как отображать данные в Live Activity
💌Как обновлять Live Activity с помощью пушей
Apple
Develop for Live Activities with iOS 16.1 beta and Xcode 14.1 beta - Latest News - Apple Developer
Discover how you can build Live Activities for your apps using the new ActivityKit framework, now available in iOS 16.1 beta and Xcode 14.1 beta. Live Activities help people keep track of your app’s content with real-time updates. Your app’s Live Activities…
Вышел Swift 5.7
Вместе с новыми iOS и Xcode вышла и новая версия Swift. В официальном блогпосте напоминают об основных изменениях в версии и дают список всех language proposals, которые были реализованы.
Вместе с новыми iOS и Xcode вышла и новая версия Swift. В официальном блогпосте напоминают об основных изменениях в версии и дают список всех language proposals, которые были реализованы.
Редактирование navigationTitle в SwiftUI
В iOS 16 появилась возможность биндить navigationTitle к строке. С помощью этого можно дать пользователям возможность редактировать название открытой сейчас страницы прямо из тулбара с названием. Это может быть особенно удобно для приложений, работающих с документами.
В iOS 16 появилась возможность биндить navigationTitle к строке. С помощью этого можно дать пользователям возможность редактировать название открытой сейчас страницы прямо из тулбара с названием. Это может быть особенно удобно для приложений, работающих с документами.
API контекстного меню для нескольких элементов коллекции
В iOS 16 добавили новый API для CollectionView – collectionView(_:contextMenuConfigurationForItemsAt:point:). Теперь, если вы выделите сразу несколько элементов, можно вызвать контекстное меню для действий над всеми ними.
В iOS 16 добавили новый API для CollectionView – collectionView(_:contextMenuConfigurationForItemsAt:point:). Теперь, если вы выделите сразу несколько элементов, можно вызвать контекстное меню для действий над всеми ними.
X (formerly Twitter)
Jordan Morgan (@JordanMorgan10) on X
Reading the @viticci iOS 16 review and I no idea this new interaction existed. When batch selecting, if you try to bring up a context menu on any of the items - you get this rad interaction grouping them together.
Is there new API for this, or do you just…
Is there new API for this, or do you just…
Разбор причин долгого запуска разных приложений
Ребята из EmergeTools проанализировали несколько крупных приложений из App Store и рассказали, что замедляет время их старта.
Ребята из EmergeTools проанализировали несколько крупных приложений из App Store и рассказали, что замедляет время их старта.
This media is not supported in your browser
VIEW IN TELEGRAM
Сравнение принципов работы SwiftUI и Jetpack Compose
Jetpack Compose – декларативный UI фреймворк, на который сейчас активно переезжают Android разработчики. В статье его сравнивают со SwiftUI в вопросах лэйаута, работы со стейтом и инструментов.
Jetpack Compose – декларативный UI фреймворк, на который сейчас активно переезжают Android разработчики. В статье его сравнивают со SwiftUI в вопросах лэйаута, работы со стейтом и инструментов.
GitHub бейджи для Xcode Cloud проектов
- В Readme опенсорсных проектов обычно добавляют бейджи, которые показывают текущий статус сборки – проходит или нет
- Для Xcode Cloud нативных бейджей пока нет
- В статье рассказывается, как с помощью shields.io автоматически генерировать бейдж, который будет показывать количество прошедших тестов
- В Readme опенсорсных проектов обычно добавляют бейджи, которые показывают текущий статус сборки – проходит или нет
- Для Xcode Cloud нативных бейджей пока нет
- В статье рассказывается, как с помощью shields.io автоматически генерировать бейдж, который будет показывать количество прошедших тестов
Medium
Creating GitHub Build Status Badges for Xcode Cloud Builds
Xcode Cloud doesn’t have status badges at the moment. Can we build one?
Архитектура системы кеширования
- Для хранения различных типов данных часто нужны разные механизмы кеширования
- Автор предлагает разбить всю систему на три слоя – Utils для запроса конкретного типа данных, AssetsManager, разруливающего, какой тип кеширования для какого типа данных выбрать, и непосредственную реализацию алгоритмов кеширования
- Для хранения различных типов данных часто нужны разные механизмы кеширования
- Автор предлагает разбить всю систему на три слоя – Utils для запроса конкретного типа данных, AssetsManager, разруливающего, какой тип кеширования для какого типа данных выбрать, и непосредственную реализацию алгоритмов кеширования
This media is not supported in your browser
VIEW IN TELEGRAM
Короткий синтаксис if let в Swift 5.7
Начиная со Swift 5.7, синтаксис для if let и guard let стал намного короче. Хотя мнения насчет того, насколько это правильное решение, продолжают расходиться.
Начиная со Swift 5.7, синтаксис для if let и guard let стал намного короче. Хотя мнения насчет того, насколько это правильное решение, продолжают расходиться.
Как работают Live Activities
- iOS выделяет ровно восемь часов на всю жизнь Live Activity, после чего выгрузит ее
- Между виджетами для home screen и live activities можно шарить весь код, за исключением связанного с обработкой жизненного цикла
- Live Activity оперирует двумя видами данных: статическими, доступными сразу при старте, и динамическими, которые продолжают поступать в течение жизни виджета
- Данные можно обновлять из приложения, находящегося в foreground, с помощью пушей или BackgroundTasks фреймворка
- iOS выделяет ровно восемь часов на всю жизнь Live Activity, после чего выгрузит ее
- Между виджетами для home screen и live activities можно шарить весь код, за исключением связанного с обработкой жизненного цикла
- Live Activity оперирует двумя видами данных: статическими, доступными сразу при старте, и динамическими, которые продолжают поступать в течение жизни виджета
- Данные можно обновлять из приложения, находящегося в foreground, с помощью пушей или BackgroundTasks фреймворка
Penpot – open source аналог Figma
- Если вас беспокоит будущее Figma после покупки Adobe, или вы просто хотите попробовать бесплатную альтернативу – посмотрите на Penpot
- Помимо стандартных дизайнерских возможностей по работе с графикой и текстом, Penpot умеет создавать интерактивные мокапы приложений и поддерживает коллаборативную работу
- Если вас беспокоит будущее Figma после покупки Adobe, или вы просто хотите попробовать бесплатную альтернативу – посмотрите на Penpot
- Помимо стандартных дизайнерских возможностей по работе с графикой и текстом, Penpot умеет создавать интерактивные мокапы приложений и поддерживает коллаборативную работу
Переезд карт с OpenGL на Metal
В недалеком будущем Apple могут совсем отказаться от поддержки OpenGL, поэтому 2ГИС решили переписать весь движок карт на Metal, сделав по пути его более производительным. В статье они рассказывают с какими проблемами столкнулись на пути от первого прототипа к публикации готового релиза.
В недалеком будущем Apple могут совсем отказаться от поддержки OpenGL, поэтому 2ГИС решили переписать весь движок карт на Metal, сделав по пути его более производительным. В статье они рассказывают с какими проблемами столкнулись на пути от первого прототипа к публикации готового релиза.
Хабр
Переход на Metal
А зачем? Причина первая: уход на пенсию OpenGL для iOS/OSX. В 2018 году Apple объявила, что прекращает поддержку этого графического API, и это только вопрос времени, когда она удалит его из своих...
TCA at scale
- Krzysztof Zablocki рассказывает про свой опыт использования ТСА в огромном проекте
- Основные проблемы: тесты слишком привязаны к деталям имплементации, сложно обозначить границы между action’ами, перфоманс заметно падает с ростом системы
- Krzysztof Zablocki рассказывает про свой опыт использования ТСА в огромном проекте
- Основные проблемы: тесты слишком привязаны к деталям имплементации, сложно обозначить границы между action’ами, перфоманс заметно падает с ростом системы
Krzysztof Zabłocki
Composable Architecture @ Scale
Last week I spoke at NSSpainX to talk about how to use Composable Architecture in larger projects, the kind of issues you might run into and how you can work around them.
Mentioned articles are:
- Exhaustive testing in TCA
- TCA Action Boundaries
- TCA Action…
Mentioned articles are:
- Exhaustive testing in TCA
- TCA Action Boundaries
- TCA Action…