uk
Feedback
iOS Dev

iOS Dev

Відкрити в Telegram

👨‍💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift

Показати більше
7 999
Підписники
+424 години
+427 днів
+8130 день
Архів дописів
iOS Dev
8 000
Динамическая адаптация к доступному пространству с помощью ViewThatFits ViewThatFits - это компонент SwiftUI, доступный с iOS 16. Вкратце принцип работы следующий: ViewThatFits выбирает первое child view, чей идеальный размер по заданным осям впишется в предложенный размер. Обычно это происходит в порядке от наибольшего к наименьшему, но, так как наше вью иногда может поместиться только вдоль одной оси, порядок может быть нарушен. По умолчанию ViewThatFits ограничивается по горизонтальной и вертикальной осям. 📖 Неплохой пример использования ViewThatFits есть тут и в официальной документации. 😃 iOS Dev

iOS Dev
8 000
Обнаружение и устранение зависаний в приложениях для iOS 📖 В этой статье рассмотрена одна из самых частых причин снижения пр
Обнаружение и устранение зависаний в приложениях для iOS 📖 В этой статье рассмотрена одна из самых частых причин снижения производительности в iOS-приложениях. Спойлер: причина в сложных вычислениях в главном потоке. Рассказано, как обнаружить зависание используя App Hangs Detection и Instruments, смоделирован сценарий зависания интерфейса в проекте SwiftUI и продемонстрированы шаги для устранения этой проблемы. ✅ Большой разбор возможных кейсов проблем с производительностью, причин зависаний и способов предотвращения такого поведения есть 💰тут и ⭐️ прямо здесь. 😃 iOS Dev

iOS Dev
8 000
Структурная идентичность в SwiftUI В отличие от традиционных UI-фреймворков, когда мы вручную отслеживаем и обновляем элемент
Структурная идентичность в SwiftUI В отличие от традиционных UI-фреймворков, когда мы вручную отслеживаем и обновляем элементы интерфейса, SwiftUI автоматически выполняет перерисовку, когда это необходимо. Однако перерисовывать все подряд — неэффективно. И поэтому нам может помочь структурная идентичность — с её помощью SwiftUI решает, какие вью действительно нужно перерисовывать, сохранив производительность. 📖 В этой статье Наташа Фадеева на примерах объясняет, в чем особенности такого подхода и какую роль играет идентичность, например, в списках. 😃 iOS Dev

iOS Dev
8 000
iOS Conf SG 2025: подборка докладов В январе прошла одна из крупнейших конференций по iOS и новый набор лучших презентаций уж
iOS Conf SG 2025: подборка докладов В январе прошла одна из крупнейших конференций по iOS и новый набор лучших презентаций уже доступен. Рекомендую обратить внимание на эти доклады: 📺 Isolation, actors, sendable… Глубокое погружение в параллелизм Donny Wals рассказывает об изоляции (кстати, напомню про этот пост), акторах и многом другом, чтобы наконец разобраться, что на самом деле пытается сказать нам компилятор, когда выдает загадочную ошибку. 📺 Заблуждения про тестирование и как использовать тесты для более быстрой разработки В этом выступлении Krzysztof Zablocki делится лучшими подходами к тестированию при работе над Sourcery, New York Times и Arc Browser. 📺 Создание приложений, которые выделяются Klemens Strasser, который получил 2 номинации Apple Design Award и даже победу, делится своим опытом. 📺 10 лет Swift: что произошло за это время Swift, который мы пишем сегодня, почти не похож на Swift, который мы писали, когда он появился 10 лет назад. Чему мы научились за это время и какие изменения еще предстоят? В этом докладе на эти вопросы пробует ответить Пол Хадсон. 📺 За пределами программирования: необходимые софт-скиллы для успешной карьеры в iOS Спикер делится советами, как строить более прочные отношения, преодолевать трудности на рабочем месте и как софт скиллы способствуют профессиональному росту 🔗 Эти и другие доклады доступны здесь. 😃 iOS Dev

iOS Dev
8 000
Picker в SwiftUI: примеры кода Это один из самых часто используемых элементов, который позволяет выбирать пользователям из на
Picker в SwiftUI: примеры кода Это один из самых часто используемых элементов, который позволяет выбирать пользователям из набора значений. Возможно, наиболее известные стили это сегмент-контрол и меню-пикер. 📖 В этой статье на несложных примерах рассказано, как создать такой пикер и настроить нужное отображение. 😃 iOS Dev

iOS Dev
8 000
Примерно раз в год я прошу вас, читатели, помочь улучшить канал: подсветить недостатки, указать, что можно сделать иначе, поделиться идеями и мыслями в целом. Сейчас как раз пятница, так что если у вас будет пара минут свободного времени, буду рад прочесть любые ваши отзывы. По традиции, форма анонимная, ни один вопрос не обязательный, но все ответы совершенно точно будут прочитаны и каждое мнение будет иметь значение. 😎 Пройти опрос можно по этой ссылке. 😃 iOS Dev

iOS Dev
8 000
Реализация пошаговой анимации в SwiftUI На talk.objc.io вышел бесплатный эпизод, посвященный созданию анимации с комбинацией
Реализация пошаговой анимации в SwiftUI На talk.objc.io вышел бесплатный эпизод, посвященный созданию анимации с комбинацией хэдера и нескольких ячеек (которые должны появляться в шахматном порядке и учитывать изменения прозрачности и градиента). 📖 Выпуск с видео и примерами кода доступен здесь. 😃 iOS Dev

iOS Dev
8 000
Кровь, пот и пиксели Перед обратным перелётом из Манчестера вспомнил про вашу чудесную подборку книг и решил чем-нибудь занять 5 часов. Спасибо, что на пути оказался один из магазинов blackwells с прайсом за книгу в 12 фунтов. Признаюсь, я ждал историй успешного успеха, и отчасти поэтому занизил изначальные ожидания. Но Джейсон Шрейер не стал описывать сказки, как сделать в гараже собственный GTA VI. Вместо этого он сосредоточился на реальных трудностях не только корпораций-гигантов вроде Blizzard, но и инди-разработчиков, например, целая глава выделена для истории Stardew Valley. Конечно, я не буду делиться спойлерами, чтобы не уменьшать потенциальный интерес от чтения. Но не могу не вынести пару мыслей касаемо разработки ПО в целом, а не только игр. Проблемы были и будут всегда, вопрос лишь в том, как именно на это реагировать не только в здесь и сейчас, но и в долгосрочной перспективе. Ведь часто бывает так, что у нас бывает только вектор развития (или как верно заметил Шрейер, работая в огромной корпорации вы как будто находитесь на корабле и плывёте куда-то на запад, но куда именно - неизвестно). Порой крайне сложно (если вообще реально) добиться, чтобы изначально поставленные годовые планы были достигнуты в нужный срок и со всем объёмом. И наша задача как разработчиков постараться описать как можно больше корнер-кейсов до начала реализации, чтобы наш корабль не превратился в призрак. 😃 iOS Dev

iOS Dev
8 000
Создание UDP-сервера и клиента в Swift на базе фрейморка Network Сетевая модель OSI описывает, каким образом устройства в лок
Создание UDP-сервера и клиента в Swift на базе фрейморка Network Сетевая модель OSI описывает, каким образом устройства в локальных (и глобальных сетях) обмениваются данными. Всего у неё 7 уровней и каждый из них выполняет определённую задачу (скорее всего вы и так это знаете, обычно это проходят на 2-3 курсе универа). Так вот, на прикладном уровне чаще всего нам достаточно URLSession. Но вот для сетевых задач более низкого уровня (работа с TCP и UDP), фреймворк Network предоставляет более полный контроль на транспортном уровне. Это обеспечивает большую гибкость и эффективность по сравнению с URLSession. 📖 В этом материале от нашего читателя Максима Егорова вы можете познакомиться с тем, как написать свой UDP-сервер и клиент на несложном, но любопытном примере. 🛠 Полный код проекта доступен здесь. 😃 iOS Dev

iOS Dev
8 000
Музей науки Манчестера В эти выходные нахожусь в Манчестере, и хотя красивых эпл сторов тут нет (кто давно читает канал, знае
Музей науки Манчестера В эти выходные нахожусь в Манчестере, и хотя красивых эпл сторов тут нет (кто давно читает канал, знает, что тут можно увидеть необычные магазины изнутри), я просто не мог не заглянуть в музей, посвященный знаковым изобретениям. Вообще, локация этого музея сама по себе необычная, для этого выбрана территория бывшего первого в мире пассажирского вокзала (Манчестер—Ливерпуль-Роуд). Понятен и акцент на исторические достижения в области промышленности. Но лично для меня было интересно посмотреть на реплику первого в истории компьютера, в котором можно было хранить инструкции выполнения программ в памяти. И хотя он описан как маленький и примитивный (для своего времени), да и название у него символичное Малыш (или baby) сейчас эта махина выглядит просто огромной. 27 тонн, 15 на 7 метров с потребляемой мощностью в 150+ кВт. Вычислительная мощность — 357 операций умножения в секунду. При этом само умножение было реализовано очень любопытно и по факту 1 умножение равнялось 14 операциям сложения. После такого задача писать мобильные приложения кажется немного проще 😌 😃 iOS Dev

iOS Dev
8 000
Новый инструмент анализа производительности: Processor Trace Длительное выполнение операций в главном потоке может привести к
Новый инструмент анализа производительности: Processor Trace Длительное выполнение операций в главном потоке может привести к самым различным проблемам: от подвисаний и проблем отображения вплоть до того, что приложение перестанет отзываться в целом. 🛠 В Xcode 16.3 Beta 2 появился новый инструмент для проверки нагрузки: Processor Trace. С его помощью можно получить информацию о выполняемом коде, включая ветвления и инструкции. Но, как обычно, есть и большое но: мы можем использовать его только на M4 и на устройствах iPhone 16 и выше. И недостаток поменьше: при использовании трассировки девайс будет работать приблизительно на 1 % медленнее. Благодаря новому инструменту можно проверять активность процессора (и уже затем мы можем решать, что реально вынести в фон с помощью Swift Concurrency или dispatch queue). 📖 Обратите внимание и на этот пост с советами по повышению производительности. 😃 iOS Dev

iOS Dev
8 000
Симметричные и асимметричные эффекты в SwiftUI c добавлением модификатора Scroll Transition 📖 Делюсь неплохим гайдом с примерами кода по добавлению эффектов при скролле, важно помнить, что это доступно только с iOS 17. А ещё напомню, что в канале есть несколько полезных постов: 🔗 Добавление растягиваемого заголовка в ScrollView с параллакс-эффектом для SwiftUI 🔗 Реализация эффектов ScrollView 🔗 Ещё один разбор ScrollTransitionConfiguration А для UIKit можно чекнуть, как реализовать бесконечный скролл на базе UITableView + API HackerNews. 😃 iOS Dev

iOS Dev
8 000
Grand Central Dispatch: большой разбор Наш подписчик подготовил фундаментальный разбор GCD, и в отличие от многих аналогичных статей, наполнил его примерами, над которыми можно (и нужно) подумать. Среди основных тем: 🔘Основные концепты: thread, multithreading, GCD, task, queue 🔘Типы очередей: main, global, custom 🔘Quality of Service (QoS) и разбор приоритетов 🔘Последовательная и параллельная очереди 🔘Способы выполнения задач: async, sync 🔘Deadlock 🔘Упражнения для проверки знаний по GCD - весь код доступен на GitHub Пообщавшись с Кириллом, было принято решение вынести некоторые задачи и в большую подборку. 📖 Оригинальную статью можно прочесть здесь. Напомню, что доступ к этой и другим практическим темам можно получить 💰тут и ⭐️ прямо здесь. 😃 iOS Dev

iOS Dev
8 000
Синхронное выполнение задач в iOS-приложениях Все iOS-разработчики справедливо беспокоятся о потенциальной блокировке основно
Синхронное выполнение задач в iOS-приложениях Все iOS-разработчики справедливо беспокоятся о потенциальной блокировке основного потока. Поэтому практически всегда длительные задачи переносятся с него, чтобы сохранить отзывчивость приложения.. Но на самом деле, если процесс короткий, как справедливо подмечает Мэтт в своей статье, такое смещение может плохо сказаться на производительности. Так как хотя затраты на переключение минимальны, такая операция на/из потока не является бесплатной. Добавление в код параллелизма сопровождается увеличением сложности сразу по нескольким направлениям (и оно может быть существенным). 📖 Больше примеров и полезных размышлений можно прочитать в оригинальном материале. А разбор других (не менее важных) вопросов в разработке, подборку вопросов по многопоточности и многое другое можно найти 💰 в закрытой базе и ⭐️ прямо здесь. 😃 iOS Dev

iOS Dev
8 000
Промпт-инженеры и их зарплаты В канале я регулярно поднимаю вопросы, связанные с AI (от проблем у Stackoverflow, запрета использования в Apple до опросов). И хотя польза от них есть, ведь эти инструменты можно использовать для решения вещей вроде базовых штук, связанными с анимациями или поиском каких-то свойств (буквально вместо поисковика), но есть то, чего стоит опасаться. Во-первых, запросы на основе реального корпоративного кода часто запрещены (и я поддерживаю этот запрет, если только это не вами созданная и обученная сетка в локальном окружении). Во-вторых, знаю ребят, которые пытались юзать ChatGPT (и аналоги) для решения алгоритмов и ломались уже на вещах уровня medium в литкоде. Особенно когда речь идёт о корнер-кейсах или нетривиальных условиях. Будет неловко, если этот код попадёт в продакшен, как считаете? В-третьих, и об этом ниже, на мой взгляд развитие ИИ должно было привести к решению базовых, даже бытовых вещей и оставить человеку возможность создавать что-то новое. Но вот в чём парадокс, происходит ровно наоборот, хотя пару десятков лет назад казалось разве робот может написать симфонию. Люди создают музыку с использованием нейросетей, рисуют картины, программируют и даже пишут книги. Достаточно почитать про бум книг на амазоне, целиком придуманных нейросетями. Или про то, что произошло с медиумом, на котором ребята с чашкой чая пилят десятки пустых, наполненных водой, статей. На счёт зарплат таких специалистов - отдельный разговор. Допустим, подписка на ChatGPT стоит от 20 до 200 долларов. Какое образование необходимо, чтобы пользоваться этим инструментом в IT-сфере? Как думаете, должна ли быть отдельная должность с ограниченным пулом задач для промпт-инженеров в iOS, возможно ли это в целом? Могут ли у них быть собственные грейды? 😃 iOS Dev

iOS Dev
8 000
Простая настройка модуляризации для iOS-приложения При этом подходе можно добиться целого ряда важных преимуществ. Например,
Простая настройка модуляризации для iOS-приложения При этом подходе можно добиться целого ряда важных преимуществ. Например, разбиение приложения на модули поможет не только облегчить совместную работу над проектом и повысить тестируемость, но и при правильных настройках улучшит скорость сборки. 📖 В этой статье показано, как можно структурировать такой проект (с использованием Core/Domain/Presentation слоёв), и, что немаловажно, как масштабировать этот подход для реализации более сложных и объёмных приложений. 🛠 Код доступен на GitHub. 🔗 В канале можно и посмотреть на подход Spotify к реализации модульной архитектуры. А познакомиться с разными подходами для выбора нужной архитектуры проекта (и посмотреть на то, какие могут быть подводные камни) можно как всегда вот здесь (или же ⭐️ прямо тут). 😃 iOS Dev

iOS Dev
8 000
Task.sleep() vs Task.yield(): Объяснение различий В Swift Concurrency можно использовать Task.sleep() и Task.yield(), чтобы п
Task.sleep() vs Task.yield(): Объяснение различий В Swift Concurrency можно использовать Task.sleep() и Task.yield(), чтобы позволить определенной задаче «заснуть» или «выйти» на определенный период времени. И хотя оба варианта выглядят и ведут себя похоже, есть несколько различий, о которых полезно знать. 📖 В этой статье Антуан рассказывает про оба способа и объясняет, какие есть области применения в приложениях. 😃 iOS Dev

iOS Dev
8 000
Рисование карт с помощью Swift Charts Стандартный фреймворк Swift Charts это мощный инструмент для отображения данных с помощ
Рисование карт с помощью Swift Charts Стандартный фреймворк Swift Charts это мощный инструмент для отображения данных с помощью самых разных способов. В своей статье Артём Новичков вдохновился крутой сессией с WWDC и придумал необычное решение с комбинацией GeoJSON и MapKit. 📖 А что из этого вышло можно увидеть здесь. 🛠 Код проекта на GitHub. 😃 iOS Dev

iOS Dev
8 000
Что происходит, когда вы перемещаете файл в git? Это интересный вопрос, поскольку каждый из нас работает с гитом постоянно. Кто-то предпочитает Xcode или Tower, кто-то юзает консоль, но так или иначе понимание принципов важно. Многие считают, что коммиты в git - это диффы изменений, но Бруно Роша в своей статье опровергает этот тезис. Коммиты это снэпшоты (кроме исключения): то есть при любом изменении в файле, git будет хранить полную копию этого файла в репозитории. Советую посмотреть в частности на то, как именно гит понимает, когда у нас два одинаковых файла (хоть и с разными именами). 📖 Про ряд других любопытных кейсов также можно почитать в оригинальной статье. Не забудьте и про этот пост, где понятно рассказано об основах работы с гитом для iOS-разработчиков. 😃 iOS Dev

iOS Dev
8 000
Обновление вопросной секции для подготовки и проведения собеседований У меня две новости (обе хорошие). Первая — вышло в публ
Обновление вопросной секции для подготовки и проведения собеседований У меня две новости (обе хорошие). Первая — вышло в публичный релиз обновлённое приложение (больше тем, вопросов на чтение кода, усложнен режим хардкора и больше интерактивности в лидерборде). Доступ как и прежде бесплатный и для всех. Вторая - расширена вопросная база для подготовки к собеседованиям. Тут можно найти детальные ответы на испытания в приложении и многое другое. В закрытой базе добавил больше тем для разработчиков начального и среднего уровня. Можно проверить себя в чтении кода и вновь вспомнить о не самых простых вопросах.
🧠 Что вы получите, подписавшись сегодня: ➡️Вопросы на чтение кода ➡️Многопоточность ➡️DispatchQueue: практические вопросы ➡️Swift Concurrency ➡️Алгоритмы: терминология и примеры ➡️Память: ARC, side table, флаги, утечки ✅А также доступ в закрытый чат, ранние релизы приложения iOS IQ, тонну теории и многое другое.
Специальное предложение уже доступно 💰 в бусти и ⭐️ прямо здесь. 😃 iOS Dev