iOS Broadcast
3.36K subscribers
1.72K photos
85 videos
983 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
▶️ Почему Metal перестал быть страшным

Как создать крутые визуальные эффекты в приложении с минимальными усилиями? Metal 🤟
Хочу посоветовать вам доклад, который, наконец, доступен на ютуб, в день когда его заблокировали в РФ 😥
Еще год назад в SwiftUI 5 случилось обновление, которое упростило использование Metal-шейдеров — того самого инструмента для графических фич. Это крутое нововведение, на мой взгляд, осталось незамеченным. В докладе разбираются возможности Metal и приводятся примеры применения Metal в повседневных задачах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71
😺️ Swift Algorithms - 5 полезных алгоритмов

Swift Algorithms - это Swift Package с полезными алгоритмами для работы с коллекциями, позволяя вам находить комбинации и перестановки, создавать случайную выборку и многое другое. Несмотря на то что это официальный пакет Apple для работы со Swift коллекциями про него мало кто знает и почти никто не использует. В статье, Винсент, предпринял попытку показать удобство использования данного пакета на примере 5 простых алгоритмов:
🟢chunks(ofCount:) - метод позволяет сделать разбивку на страницы. Вы можете использовать его для разделения коллекции на фрагменты заданного размера или на основе предиката.
🟢randomSample() - функция позволяет вам взять случайную выборку из последовательности. Если вам когда-либо приходилось внедрять случайную выборку самостоятельно, вы знаете, как легко ошибочно внести смещение в выборку. Поэтому возможность полагаться на официальную реализацию весьма приветствуется!
🟢indexed() - работает очень похоже на функцию enumerated(), за исключением того, что, в то время как функция enumerated() возвращает увеличивающееся количество элементов, функция indexed() возвращает фактические индексы элементов. Это означает, что вы, в свою очередь, можете безопасно использовать эти индексы для индексации исходной коллекции без риска вызвать сбой во время выполнения.
🟢min(count:), max(count:) - очень полезны, если вам когда-либо понадобится извлечь только N наименьших или наибольших элементов из большой последовательности.
🟢compacted, firstNonNil, uniqued - решают очень простую и распространенную проблему работы с коллекциями, но оттестированы и оптимизированы

От себя хочу добавить, очень странно что Apple решили не добавлять Algorithms в свой стандартный набор фреймворков, поставляемых с системой. Как мне кажется, это бы сильно забустило использование этих алгоритмов и улучшило общую стабильность платформы. Может быть в iOS 19 Algorithms станут частью системы, а SwiftUI отдельным пакетом 😌
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4🔥2🤔1
Безопасность и конфиденциальность приложений

Небольшой обзор как не нужно делать безопасность на iOS
Наткнулся я на выходных на статью про "Базовые практики безопасности для iOS приложений" и в целом, статья не плохая
🟢Используйте HTTPS и SSL/TLS 😏
🟢Шифруйте данные пользователей 🧠
🟢Используйте ATS 🍿
🔴Реализуйте биометрическую аутентификацию
Приведен пример как не нужно делать. Точнее показан только первый шаг, который является необходимым но не достаточным. После этого необходимо читать данные из Keychain которые зашифрованы с биометрией.

Какой вывод можно сделать из этой истории? Не доверяйте SMM-ым статьям в блогах образовательных платформ и всегда проверяйте информацию в первоисточниках:
🟢Шпаргалка по безопасности OWASP
🟢Как тестировать и ломать Local Authentication
🟢Как правильно реализовывать Local Authentication
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Результаты ужегодного опроса разработчиков на Stackoverflow

Мои хайлайты:
🟢65к человек приняли участие
🟢48к человек указали свою зарплату
🟢В опросе зарплат спрашивали суммарный годовой доход, с учетом всех бонусов до вычета налогов
🟢Опрос не запускали на РФ и Китай 😭
🟢Swift обошел Objective-C по средней зарплате разработчиков
🟢Относительно прошлого года средние зарплаты Swift и Objective-C разработчиков упали
🟢Большая часть разработчиков уже используют ChatGPT в своей работе
🟢4.9% опрошенных используют Swift (~3200), 2.3% Objective-C (~1500)
🟢Xcode используют 10%, почему-то больше чем Swift+Obj-C
🟢SQLite популярнее MS SQL
🟢Teams (56%) популярнее Slack (49%), а Mattermost почти никто не использует (4%)
🟢Количество тех кто использует Mac для работы равно тем кто использует в быту. Винда более популярна в быту, чем для работы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥1
5 преимуществ использования системных компонент

Очень полезная статья, напоминающая нам о важности использования системных компонентов. Используя системные компоненты, мы получаем бонусом доступность, удобство для пользователей и производительность. Часто, видя новый элемент в дизайне, разработчик создает новый уникальный компонент, забывая рассмотреть возможность кастомизации нативных компонентов. Особенно это актуально для UIKit, в котором учтено и оптимизировано очень многое:
🟢Доступность. Системные компоненты поддерживают не только динамический шрифт и VoiceOver но и такие кейсы как шрифты с написанием справа-налево, изменение контраста и инверсию цветов и многое другое
🟢Использование системных компонентов может ускорить процесс проектирования и сэкономить время, особенно при реализации личных проектов
🟢Согласованный дизайн с системными компонентами может привести к повышению производительности приложения и увеличению конверсий

Мне лично использование правильных системных компонент много раз позволяло закрыть задачу доработки одной строкой, вместо того чтобы реализовывать все с нуля. Несмотря на то что системные компоненты содержат ошибки, самописные компоненты содержает еще больше ошибок
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Typealias: что это такое и когда его использовать
Каждый раз встречая код с набором полей одного типа задаюсь вопросом: "Почему разработчики не используют typealias?" Псевдонимы есть даже в C (typedef). Typealias обеспечивает более семантический контекст для существующих типов, улучшая читаемость кода и передавая более четкие сообщения читателям

🟢Typealias предоставляют более семантический контекст для существующих типов, улучшая читаемость кода.
🟢Они полезны для создания типов, зависящих от предметной области, улучшения читаемости замыканий и кортежей, предоставления более коротких имен для связанных типов, вложенных типов и группировки нескольких протоколов.
🟢Чрезмерное использование псевдонимов типов может привести к путанице, поэтому разработчикам следует использовать их разумно.
🟢Псевдонимы типов не создают новых типов, а служат псевдонимами для существующих типов, улучшая семантику кода.
🟢Псевдонимы типов можно использовать для перепрофилирования существующих типов в различных доменах или сценариях, чтобы донести более четкие сообщения до читателей.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8