Periphery – инструмент для обнаружения неиспользуемого кода
- Periphery собирает ваш проект, анализирует его структуру, мутирует граф зависимостей и в итоге выявляет неиспользуемый код.
- Помимо неиспользуемых деклараций классов, протоколов и структур, Periphery умеет делать и более сложные проверки. Например, находить неиспользуемые параметры функций, enum cases, переменные, которые были инициализированы, но не использованы.
- Можно подключить к Xcode для локальной работы или настроить на CI.
- Periphery собирает ваш проект, анализирует его структуру, мутирует граф зависимостей и в итоге выявляет неиспользуемый код.
- Помимо неиспользуемых деклараций классов, протоколов и структур, Periphery умеет делать и более сложные проверки. Например, находить неиспользуемые параметры функций, enum cases, переменные, которые были инициализированы, но не использованы.
- Можно подключить к Xcode для локальной работы или настроить на CI.
Разбор частых ошибок в работе со Swift Concurrency
В статье разбираются неочевидные особенности работы async-await, с которыми не помогает компилятор, и их влияние на ваш код. Например, поведение очередей различается на симуляторе и устройстве.
В статье разбираются неочевидные особенности работы async-await, с которыми не помогает компилятор, и их влияние на ваш код. Например, поведение очередей различается на симуляторе и устройстве.
Wojciech Kulik
Swift Concurrency - Things They Don't Tell You
Swift Concurrency encourages people to just jump in, add async-await to an existing code, and run some Tasks not really knowing what is going on under the hood. Unfortunately, there are many traps around concurrency and no... the compiler doesn't check everything.
Как писать CLI тулинг на Swift
- ArgumentParser – фреймворк от Apple, который дает возможность описывать интерфейс CLI программы с помощью структур.
- Благодаря этому можно очень просто создавать инструменты с большим количеством команд и подкоманд.
- В статье подробно разбирается пример разработки такого инструмента с ввводом и валидацией пользовательских данных и обработкой ошибок.
- ArgumentParser – фреймворк от Apple, который дает возможность описывать интерфейс CLI программы с помощью структур.
- Благодаря этому можно очень просто создавать инструменты с большим количеством команд и подкоманд.
- В статье подробно разбирается пример разработки такого инструмента с ввводом и валидацией пользовательских данных и обработкой ошибок.
Градиент в Swift Charts
В статье разбирается, как можно сконфигурировать Bar Chart из Swift Charts таким образом, чтобы цвет градиента соответствовал значениям по оси Y. Получается очень классное решение всего в 15 строк кода.
В статье разбирается, как можно сконфигурировать Bar Chart из Swift Charts таким образом, чтобы цвет градиента соответствовал значениям по оси Y. Получается очень классное решение всего в 15 строк кода.
Обновление SFSymbols c 1000 новых символов
Вышло обновление приложения SFSymbols от Apple:
- 1000 новых символов
- Поддержка variable color
- Улучшения рендеринга
Вышло обновление приложения SFSymbols от Apple:
- 1000 новых символов
- Поддержка variable color
- Улучшения рендеринга
Swift-index-store – библиотека для работы с индексами компилятора
- Во время компиляции проекта swiftc и clang генерируют детальные индексы для исходного кода. Модель данных этих индексов публичная, но не задокументированная.
- Swift-index-store – набор инструментов для работы с этой моделью данных. Под капотом крутится сишная libIndexStore, являющаяся частью LLVM.
- Больше деталей про модель данных индекса можно почитать здесь.
- Во время компиляции проекта swiftc и clang генерируют детальные индексы для исходного кода. Модель данных этих индексов публичная, но не задокументированная.
- Swift-index-store – набор инструментов для работы с этой моделью данных. Под капотом крутится сишная libIndexStore, являющаяся частью LLVM.
- Больше деталей про модель данных индекса можно почитать здесь.
GitHub
GitHub - MobileNativeFoundation/swift-index-store: Library to read from Swift / clang source code indexes
Library to read from Swift / clang source code indexes - MobileNativeFoundation/swift-index-store
Истории разработчиков Dynamic Island
- В статье разбираются примеры того, как в различных приложениях использовали Dynamic Island. Если вы еще не придумали, как именно использовать эти виджеты в вашем приложении, вас это может навести на новые идеи.
- В Citymapper виджет используется для отображения сводной информации о маршруте и следующем шаге.
- В клиенте для Reddit – для отображения последних изменений в ленте и уведомлений.
- В фитнес-помощнике SmartGym в виджете содержится гайд по текущему упражнению и секундомер.
- В Flighty – подробная информация о вашем рейсе.
- В статье разбираются примеры того, как в различных приложениях использовали Dynamic Island. Если вы еще не придумали, как именно использовать эти виджеты в вашем приложении, вас это может навести на новые идеи.
- В Citymapper виджет используется для отображения сводной информации о маршруте и следующем шаге.
- В клиенте для Reddit – для отображения последних изменений в ленте и уведомлений.
- В фитнес-помощнике SmartGym в виджете содержится гайд по текущему упражнению и секундомер.
- В Flighty – подробная информация о вашем рейсе.
Podlodka iOS Crew про архитектуру
63% участников исследования айос коммьюнити сказали, что Podlodka iOS Crew была лучшей конференцией, которую они посетили в 2022 году. Так вот, 14-18 ноября пройдет новый сезон iOS Crew с кучей сессий про архитектурные корнер кейсы. Вот несколько кайфовых тем:
🧱Как правильно проектировать SDK
🔃Сравнение TCA с MVVM
📝Публичное собеседование по System Design в iOS
🗺Архитектурные подходы к навигации
В этот раз конференцию мы проводим в Telegram. Помимо участия в сессиях, вы попадаете в ЗАКРЫТЫЙ ТОП СИКРЕТ ТЕЛЕГРАМ ЧАТ, в котором айосеры из разных компаний каждый день рассказывают, как они подходят к решению разных проблем. Например, на этой неделе говорили про организацию релизов и подходы к локализации.
👉Подключайтесь и вы!
63% участников исследования айос коммьюнити сказали, что Podlodka iOS Crew была лучшей конференцией, которую они посетили в 2022 году. Так вот, 14-18 ноября пройдет новый сезон iOS Crew с кучей сессий про архитектурные корнер кейсы. Вот несколько кайфовых тем:
🧱Как правильно проектировать SDK
🔃Сравнение TCA с MVVM
📝Публичное собеседование по System Design в iOS
🗺Архитектурные подходы к навигации
В этот раз конференцию мы проводим в Telegram. Помимо участия в сессиях, вы попадаете в ЗАКРЫТЫЙ ТОП СИКРЕТ ТЕЛЕГРАМ ЧАТ, в котором айосеры из разных компаний каждый день рассказывают, как они подходят к решению разных проблем. Например, на этой неделе говорили про организацию релизов и подходы к локализации.
👉Подключайтесь и вы!
SiriSpy – уязвимость в iOS, которая позволяет сторонним приложениям получить доступ к логу разговоров с Siri
- Любое приложение с доступом к Bluetooth может записывать ваш разговор с Siri или текст, надиктованный с помощью голосовых фичей клавиатуры. Уязвимость работает, когда вы используете AirPods. Доступ к данным происходит без запросов разрешений на использование микрофона и не оставляет никаких следов.
- В статье очень классно разбирается, как баг был обнаружена.
- Уязвимость уже закрыта в iOS 16.1, iOS разработчик, обнаруживший ее, получил 7000$.
- Любое приложение с доступом к Bluetooth может записывать ваш разговор с Siri или текст, надиктованный с помощью голосовых фичей клавиатуры. Уязвимость работает, когда вы используете AirPods. Доступ к данным происходит без запросов разрешений на использование микрофона и не оставляет никаких следов.
- В статье очень классно разбирается, как баг был обнаружена.
- Уязвимость уже закрыта в iOS 16.1, iOS разработчик, обнаруживший ее, получил 7000$.
Ушла эпоха – Raywenderlich.com теперь Kodeco
- Raywenderlich.com – легендарный сайт, туториалы на котором обучили несколько поколений iOS разработчиков. Удивительно, но сайт ведет не один человек, а команда из 30 человек и нескольких сотен авторов материалов.
- Ребята решили, что переросли уровень личного блога одного Рэя, и решили переименоваться. Поэтому не удивляйтесь, когда встретите название Kodeco!
- Raywenderlich.com – легендарный сайт, туториалы на котором обучили несколько поколений iOS разработчиков. Удивительно, но сайт ведет не один человек, а команда из 30 человек и нескольких сотен авторов материалов.
- Ребята решили, что переросли уровень личного блога одного Рэя, и решили переименоваться. Поэтому не удивляйтесь, когда встретите название Kodeco!
Window management в SwiftUI
- В последней версии SwiftUI появился новый API для управления окнами.
- Проверить, поддерживает ли возможность открытия нескольких окон платформа, на которой запущено приложение, можно с помощью переменной supportsMultipleWindows. Такая поддержка есть в macOS и iPadOS.
- С помощью этого API можно довольно легко поддерживать одну кодовую базу, которая работает как в режиме многооконности, так и в одном окне.
- В последней версии SwiftUI появился новый API для управления окнами.
- Проверить, поддерживает ли возможность открытия нескольких окон платформа, на которой запущено приложение, можно с помощью переменной supportsMultipleWindows. Такая поддержка есть в macOS и iPadOS.
- С помощью этого API можно довольно легко поддерживать одну кодовую базу, которая работает как в режиме многооконности, так и в одном окне.
FengNiao – инструмент для удаления неиспользуемых изображений из xcodeproj
- FengNiao – это CLI тула, которая сканирует все директории проекта в поисках неиспользуемых ресурсов.
- При запуске можно указать конкретные типы ресурсов, расширения файлов, или директории, которые надо пропустить.
- Можно настроить для запуска в билд фазах проекта.
- FengNiao – это CLI тула, которая сканирует все директории проекта в поисках неиспользуемых ресурсов.
- При запуске можно указать конкретные типы ресурсов, расширения файлов, или директории, которые надо пропустить.
- Можно настроить для запуска в билд фазах проекта.
Подробный гайд по работе с Passkeys в iOS и на бэкенде
Passkeys – beta-фича новой iOS, которая заменяет пароли на публичные крипто ключи. По сути, Passkeys – реализация стандарта Web Authentication API от Apple.
В статье разбирается разработка простого флоу авторизации – пользователь вводит свое имя, нажимает кнопку, сервер генерирует Passkey, который сохраняется на устройстве и дальше используется для подтверждения личности.
Passkeys – beta-фича новой iOS, которая заменяет пароли на публичные крипто ключи. По сути, Passkeys – реализация стандарта Web Authentication API от Apple.
В статье разбирается разработка простого флоу авторизации – пользователь вводит свое имя, нажимает кнопку, сервер генерирует Passkey, который сохраняется на устройстве и дальше используется для подтверждения личности.
Тинькофф приглашает mobile-разработчиков с опытом от 3 лет в свою команду в Казахстане💡
Тинькофф центр разработки в Алматы ищет опытных iOS- и Android-разработчиков, чтобы сделать им быстрый оффер в компанию.
Все просто:
— вы заполняете заявку на Mobile Contest до 16 ноября;
— проходите все этапы интервью за один день 19 ноября.
Далее в течение недели получаете оффер, если работа подойдет вам по условиям и скиллам.
▪️Зарегистрироваться и узнать подробнее о Mobile Contest: https://v.tinkoff.ru/contest_mobile_tinkoff
Тинькофф открыл свой центр разработки в Казахстане с зарплатным проектом в локальном банке. Можно работать из офиса в Алматы и удаленно из любой точки страны. А еще Тинькофф заботится о комфорте и здоровье сотрудников. Помогает оформить РВП, предоставляет расширенное ДМС и необходимое для работы оборудование, а также компенсирует затраты на спорт и питание.
Станьте частью распределенной команды Тинькофф и работайте удаленно или из офисов в 20 городах России, в Казахстане, Беларуси и Армении.
Тинькофф центр разработки в Алматы ищет опытных iOS- и Android-разработчиков, чтобы сделать им быстрый оффер в компанию.
Все просто:
— вы заполняете заявку на Mobile Contest до 16 ноября;
— проходите все этапы интервью за один день 19 ноября.
Далее в течение недели получаете оффер, если работа подойдет вам по условиям и скиллам.
▪️Зарегистрироваться и узнать подробнее о Mobile Contest: https://v.tinkoff.ru/contest_mobile_tinkoff
Тинькофф открыл свой центр разработки в Казахстане с зарплатным проектом в локальном банке. Можно работать из офиса в Алматы и удаленно из любой точки страны. А еще Тинькофф заботится о комфорте и здоровье сотрудников. Помогает оформить РВП, предоставляет расширенное ДМС и необходимое для работы оборудование, а также компенсирует затраты на спорт и питание.
Станьте частью распределенной команды Тинькофф и работайте удаленно или из офисов в 20 городах России, в Казахстане, Беларуси и Армении.
Памятка про форматтеры, доступные в Swift
Небольшая памятка про то, как можно форматировать даты, имена и измерения. А детали есть в этой сессии WWDC.
Небольшая памятка про то, как можно форматировать даты, имена и измерения. А детали есть в этой сессии WWDC.
if and switch as expressions
В пропозале предлагается дать возможность использовать if и switch следующим образом:
- Как возвращаемое значение функции без return.
- Для объявления и присваивания значения переменным без оборачивания в замыкания: let foo = if ….
Что думаете?
В пропозале предлагается дать возможность использовать if и switch следующим образом:
- Как возвращаемое значение функции без return.
- Для объявления и присваивания значения переменным без оборачивания в замыкания: let foo = if ….
Что думаете?
Swift Forums
[Pitch] if and switch expressions
Hey all, an early-stage pitch for this feature. No implementation quite yet but hopefully not too far off. if and switch expressions This proposal introduces the ability to use if and switch statements as expressions, for the purpose of: Returning values…
Текущий статус интеропа С++ и Swift
Рабочая группа в команде Swift, отвечающая за интероп между Swift и C++, поделилась своим статусом:
- Вижн того, как должен работать интероп Swift -> C++ и C++ -> Swift.
- Завезли довольно много языковых изменений, которые помогают переводить разные системы типов друг в друга. Часть из изменений попала в Swift 5.7, а часть уедет в следующие версии.
Рабочая группа в команде Swift, отвечающая за интероп между Swift и C++, поделилась своим статусом:
- Вижн того, как должен работать интероп Swift -> C++ и C++ -> Swift.
- Завезли довольно много языковых изменений, которые помогают переводить разные системы типов друг в друга. Часть из изменений попала в Swift 5.7, а часть уедет в следующие версии.
Swift Forums
Report: Swift and C++ interoperability project progress in the Swift-5.7 time frame
This post presents the progress that the Swift and C++ interoperability workgroup has made during the first eight months of this year by highlighting the major documentation and compiler changes that landed in that time frame. The span of this time frame…
Как выполнить код в SwiftUI ровно один раз
- .onAppear не подходит – он будет вызываться каждый раз, когда вы возвращаетесь на View. Блоки .task и init тоже не подходят.
- Вместо этого можно подписаться на изменение приватной переменной, значение которой привязано к жизненному циклу View.
- .onAppear не подходит – он будет вызываться каждый раз, когда вы возвращаетесь на View. Блоки .task и init тоже не подходят.
- Вместо этого можно подписаться на изменение приватной переменной, значение которой привязано к жизненному циклу View.
Swiftjective-C
Running Code Only Once in SwiftUI
We often look to `.onAppear` or the nascent `.task` modifier to run single purpose tasks. But, those aren't reliable in all cases.
Октябрьский выпуск дайджеста Swift Evolution
- Принят пропозал, который позволит использовать любые переменные в ViewBuilder. Например, в body в SwiftUI. Любые переменные – это lazy, computed vars и другие, которые раньше не работали.
- В стадию ревью перешли пропозалы по добавлению метода sleep(for:) в Clock, модификаторов borrow и take для тюнинга ARC.
- Принят пропозал, который позволит использовать любые переменные в ViewBuilder. Например, в body в SwiftUI. Любые переменные – это lazy, computed vars и другие, которые раньше не работали.
- В стадию ревью перешли пропозалы по добавлению метода sleep(for:) в Clock, модификаторов borrow и take для тюнинга ARC.
Подкаст Санделла про техники создания быстрых и отзывчивых интерфейсов
В гостях – Adam Bell, UI инженер в Netflix, автор библиотеки для анимаций Motion и кучи другого опенсорса.
В гостях – Adam Bell, UI инженер в Netflix, автор библиотеки для анимаций Motion и кучи другого опенсорса.
Swift by Sundell
121: “Responsive and smooth UIs”, with special guest Adam Bell | Swift by Sundell
Adam Bell returns to the podcast to discuss different techniques and approaches for optimizing UI code, and how to utilize tools like animations in order to build iOS apps that feel fast and responsive.