iOS Dev
رفتن به کانال در Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
نمایش بیشتر8 003
مشترکین
+424 ساعت
+477 روز
+8230 روز
آرشیو پست ها
8 004
Алгоритмы: терминология и примеры
Для того, чтобы понять сложность алгоритма, иногда достаточно просто использовать свою интуицию (не нужно слишком глубоких математических знаний).
Например, если код использует один цикл, в котором мы проходим по всем n элементов входных данных, сложность O(n).
Если у нас есть два вложенных цикла, это O(n^2), и так далее.
📖 Конечно, в канале уже был пост про сложность алгоритмов.
Но бывают и далеко не самые очевидные моменты.
🧠 Пришло время новой секции в iOS IQ (добавлено две части, на теорию и на оценку кода). Есть и интерактивный формат в тестфлайте.
❤️Получить доступ можно сразу на год.
🐱 А в честь WWDC со скидкой 24% - вот тут (ссылка работает ровно неделю).
😃 iOS IQ
8 004
Как справиться с секцией на написание кода?
Чтобы оценить кандидата, компании используют одну, либо сразу две итерации:
1️⃣ Лайв-кодинг. Нужно решить техническую задачу перед интервьюерами (от 0.5 до 1.5 часов).
2️⃣ Тестовое задание. Чаще всего на срок от одного-двух дней (иногда неделя).
📖 Вот тут можно ознакомиться с некоторыми полезными советами про прохождению этой секции. Среди них:
🔘 Прочтите условие несколько раз. Как известно в условии вопроса часто половина решения (особенно касается лайв-кодинга).
🔘 Разделите техническую задачу на следующие темы: обязательные требования и дополнительные требования.
🔘 Выпишите вопросы. Уточните их у интервьюера.
🔘 Убедитесь, можно ли юзать сторонние либы перед тем, как их добавлять.
При подготовке также важно определиться, какой именно архитектурный паттерн вам нужен.
✅Другие советы и задачи можно найти вот тут.
😃 iOS Dev
8 004
Вопрос из приложения iOS IQ
🐱 Попробуйте догадаться, какая временная сложность у алгоритма для решения задачи «Ханойские башни».
Это пример из приложения, доступного на бусти (кстати, есть хардкор-режим для настоящих профессионалов).
✅Уже сейчас можно попробовать воглавить таблицу лидеров.
😃 iOS Dev
8 004
Три важных слова – Митап, Android, Алиса
Команда мобильной разработки Алисы приглашает Android-разработчиков на свой первый митап в Екатеринбурге.
Расскажем, как использование RFC может улучшить процесс разработки на примере нашей библиотеки для платформ Android и iOS.
Поговорим о том, из каких этапов состоит производство станции Дуо Макс и ТВ станций, как мы решаем задачу автоматизации процесса проверки качества производимых устройств.
А ещё поделимся нашим опытом и лучшими практиками использования TV Input Framework.
Зарегистрироваться можно по ссылке.
Реклама. ООО "Яндекс", ИНН 7736207543.
8 004
The Composable Architecture: часто задаваемые вопросы
Создатели компонуемой архитектуры (или же TCA) собрали ответы на часто задаваемые вопросы, и развеяли несколько мифов (в том числе и о минусах):
🔗 Следует ли использовать TCA для всех типов приложений?
🔗 Идет ли TCA вразрез со SwiftUI?
🔗 Не является ли ведение отдельного перечисления «действий» лишней работой?
🔗 Являются ли функции TCA неэффективными, потому что все состояние приложения хранится в одном массивном типе?
🔗 Нужно ли быть знакомым с «функциональным программированием», чтобы использовать TCA?
📖 Другие (не менее важные) вопросы создатели архитектуры также рассмотрели в своём блоге.
✅Узнать больше про архитектуры можно в этом посте.
😃 iOS Dev
8 004
Протоколы в iOS: назначение и примеры
Даже при частом использовании протоколов начинающие разработчики могут не знать все особенности.
Например,
Identifiable постоянно нужен в SwiftUI, но почему он обычно применяется для списков? Или CustomStringConvertible, который вполне подойдёт для более удобного дебага наших моделей.
📖 В этой статье разбираются популярные протоколы на примерах кода.
🧠 Ах да, кстати, приложение уже в тестфлайте и вы можете получить ранний доступ.
Кстати, проголосовавшие в опросе будут приятно удивлены списку тем внутри.
😃 iOS Dev8 004
Настраиваемая кнопка с разными состояниями в SwiftUI
Конечно, задача мобильных разработчиков далеко не только в покраске кнопок, но знать несколько подходов и обладать арсеналом таких навыков необходимо.
SwiftUI в несколько раз упрощает создание переиспользуемой кнопки (и добавление конфигов).
📖 Вот тут можно увидеть подходы к созданию такого элемента на реальных примерах.
😃 iOS Dev
8 004
Объяснение использования
@preconcurrency в Swift
Если включить -strict-concurrency для своих существующих проектов, то, вероятнее всего, при первой компиляции проекта Xcode выдаст множество предупреждений и/или ошибок.
Этого можно избежать с использованием @preconcurrency, можно использовать для:
📼 functions
📼 types
📼 protocols
📼 imports
С помощью @preconcurrency появляется возможность импортировать старые модули в новый код.
Это отличный способ начать постепенно внедрять строгий параллелизм по мере приближения выпуска Swift 6.
📖 В этом посте рассмотрены примеры использования и ошибки, которые могут встретиться.
😃 iOS Dev8 004
Как сделать иконку приложения анимированной?
Наверняка, многие могли задуматься и раньше, как избежать алерта при выборе альтернативной иконки.
Bryce Bostwick, разработчик, знакомый по великолепным постам о реверс-инжиниринге, попробовал покопать глубже, и написал большое исследование о том, как создать иллюзию анимации (на самом деле для этого нужно достаточно часто менять эти иконки).
📖 Почитать увлекательную статью можно здесь (и рекомендую посмотреть остальные статьи блога).
📺 В формате видео вот тут.
🛠 Демо-проект (посмотреть и попробовать повторить) доступен на github. Напоминаю про этот пост, если захотите выложить в стор.
✅Больше крутых эффектов можно увидеь здесь или тут.
😃 iOS Dev
8 004
Подготовка к собеседованиям: Swift Concurrency
Подготовил вопросы, которые помогут новичкам и опытным разработчикам, знакомым с концепциями параллелизма и заинтересованным в изучении синтаксиса и API Swift Concurrency.
Можно узнать что-то новое о приоритетах, выполнении нескольких задач одновременно и многом другом. Задачи постарался по максимуму покрыть примерами с кодом. Некоторые из вопросов уже добавлены в приложение.
✅Доступ можно получить здесь или тут сразу на год.
Больше важных тем:
🔗 Блок вопросов: многопоточность (и бонус)
🔗 Собеседования: вопросы на понимание кода
🔗 DispatchQueue: практические вопросы
😃 iOS Dev
8 004
Что означает spacing = nil в SwiftUI?
Понимание принципов Spacing важно при работе со сложной версткой, а владение определенными техниками может помочь добиться эффектов, которые сложно реализовать традиционными методами.
Как можно видеть на гифке, когда используется nil, расстояние между Text и соседними элементами больше не равны.
Из документации Apple:
При установке nil расстояние должно быть дефолтным умолчанию для каждой пары subviews.
Но, как оказывается, это значение не фиксировано.
📖 В этой статье объясняется, что на самом деле означает значение nil по умолчанию для параметра Spacing.
Кроме того, рассматриваются и другие аспекты, связанные с этим свойством.
😃 iOS Dev
8 004
Почему загрузка пакетов с помощью Swift Package Manager занимает слишком много времени?
Когда мы добавляем зависимость в проект через spm, он извлекает весь репозиторий пакета со всеми ветками и полную историю git, которая может представлять собой годы git-снапшотов.
Суть проблемы тут.
Но почему?
На вопрос ответил инженер по инфраструктуре GitHub (обратите внимание на дату комментария), схожая проблема была и в Cocoapods:
Поверхностное клонирование по какой-то причине обходится намного дороже, чем клонирование всего репозитория. К тому же GitHub ограничивает скорость в таких репах, что приводит к значительному увеличению времени.
Хуже того, фетч может вообще завершиться ошибкой по таймауту.
Так в чем же заключается решение?
Очевидно, многие компании используют такой подход. Они создают отдельный реп с предварительно скомпилированным .xcframework, при этом пользователь получит только нужную часть исходного репозитория.
Например airbnb/lottie применила этот подход и уменьшила размер своего репозитория с +300 МБ до менее 500 КБ!
Signal сделал то же самое: отсюда OneSignal-iOS-SDK пришли к оптимизированной версии OneSignal-XCFramework.
📖 Про другой интересный кейс можно прочитать на хабре.
😃 iOS Dev
8 004
Те, кто подписан на бусти, знают, что кроме ведения канала по мере наличия свободного времени я разрабатываю приложение-компаньон для iOS-разработчиков.
С покрытием важных тем, источниками и, надеюсь, интересными вопросами.
Сегодня пришло время анонсировать разработку официально.
🧠 IQ — приложение-компаньон для iOS-разработчиков скоро в тестфлайте.
Приложение изначально будет доступно только для подписчиков бусти (достаточно уровня База), поэтому если вы хотите поддержать канал, подпишитесь:
❤️❤️❤️❤️❤️ Поддержать канал и получить ранний доступ.
😃 iOS Dev
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
