iOS Dev
رفتن به کانال در Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
نمایش بیشتر8 000
مشترکین
-124 ساعت
+467 روز
+7930 روز
آرشیو پست ها
8 000
Популярность CocoaPods продолжает расти, несмотря на продвижение Swift Package Manager
Казалось бы, с 2015 года использование CocoaPods должно пойти на спад, ведь именно тогда появился SPM, но именно так и случилось все не совсем так.
Общее количество скачиваний всех репозиториев превысило 70 миллионов, и это несмотря на:
1️⃣ Огромный импакт Apple в продвижение своей экосистемы, и в частности,
Swift Package manager.
2️⃣ Периодические проблемы с совместимостью. В том числе, даже в последнем Xcode 14.3. Хотя для этого и помогает press f (🫡) в прямом смысле.
3️⃣ Недавний вклад Apple в поддержку Swift Package Index.
Конечно, мы не знаем точных цифр и использований SPM на текущий момент, но факт остаётся фактом: cocoapods пока ещё не собирается упускать лидирующие позиции.
😃 iOS Dev8 000
🏆 Я прошёл CodeRun, решив все задачи!
Нужно организовать свой буткемп, получается?😅
В последнем апдейте про это приключение мне оставалось несколько сложных и средних задач, а также одна простая.
Максимум на одну задачу ушло несколько десятков попыток, зато некоторые сложные удалось сдать практически сразу после обработки корнеркейсов.
Первый большой шаг вперёд был сделан в кажущейся лёгкой задаче про минусы.
Очень много сил ушло и на задачу с разноцветными дорогами.
Но после этого хотя бы замаячил горизонт, что с контестом получится справиться.
Ровно до момента, пока не наткнулся на салон Health & Sun.
Что может быть плохого в соляриях, спросите вы?
А например, то, что вечера четверга и пятницы могут уйти на изучение:
📖 Раз, два, три, четыре.
Но в итоге и этот узел был распутан.
На этом пути было сложно, были извилистые повороты, но как известно: у страха глаза велики, и главное - начать.
Про буткемп это, конечно же, шутка. 😎
😃 iOS Dev - я уважаю правила, и обязательно поделюсь решениями после окончания контеста, который будет идти до июля.
Буду рад вашей поддержке! 🏆❤️🔥
8 000
Продвинутые переходы в SwiftUI: анимации на примерах с кодом
🧑💻 Важно понимать, как создавать анимированные переходы. Как их настраивать, комбинировать и проверять работу.
Для этого можно изучить уже существующие виды анимаций, и на их основе попробовать создать что-то своё.
📖 В этой статье наглядно разбираются различные варианты использования переходов, включая создание кастомных эффектов и их комбинаций.
👨💻 А вот здесь есть gist с кодом, который можно попробовать завести и кастомизировать.
😃 iOS Dev
8 000
CoreData для базовых задач одним методом
Системный фреймворк имеет высокий порог входа и много неочевидных моментов, которые обязательно всплывут при масштабировании приложения.
Как устроить работу с CoreData таким образом, чтобы минимизировать потенциальные лаги при работе с данными?
1️⃣ Чтение должно происходить из main-очереди для достижения отзывчивого и актуального UI.
2️⃣ Запись, изменение и сохранение информации должно производиться вне main-очереди.
3️⃣ Необходимо иметь понимание, когда операция записи закончила свое выполнение и в БД все готово к выполнению дальнейших действий с актуальными данными.
4️⃣ Запись должна происходить синхронно друг за другом, чтобы избежать крешей и неконсистентности данных.
5️⃣ Решение должно предоставлять удобное понятное API для взаимодействия.
6️⃣ Решение должно быть щадящее для новичков и, насколько это возможно, защищено от выстрелов в ногу.
📖 В этой статье автор делится своим опытом работы с CoreData, и предлагает решение, упрощающее работу с фреймворком.
😃 iOS Dev
8 000
Как быстро разобраться в основах Swift Concurrency
📖 Идеальная аудитория этого материала — опытный разработчик, знакомый с концепциями параллелизма и заинтересованный в изучении синтаксиса и API Swift Concurrency.
В нём перечислены примеры работы с async/await, интеграции с существующим кодом, а также описано, как работать с группами задач.
🧐 Кроме этого, доступно объясняется, как корректно задавать приоритеты задачам и проверять их при выполнении.
😃 iOS Dev
8 000
Создание кастомного компонента на SwiftUI: Segmented Control
Уверен, что практически каждый, кто пытался создавать свой контрол так, как нужно по дизайну, сталкивался с теми или иными подводными камнями.
Иногда простое на первый взгляд решение в дизайне может заставить углубиться в системную реализацию и окажется, что проще создать своё.
📖 Именно об этом на хабре рассказывает Тёма Загоскин на примере создания Segmented Control.
🛠 А вот здесь пример финального кода.
😃 iOS Dev
8 000
Оптимизация приложения при использовании Network Reachability
Network Reachability — жизненно важный аспект приложений, работающих с использованием интернета.
У пользователей не всегда будет хорошее (и стабильное) подключение, поэтому очень важно оптимизировать приложение для плохих условий.
📖 В этом материале рассматривается несколько важных аспектов:
1️⃣ Почему стоит дожидаться самого подключения вместо предварительной проверки.
2️⃣
timeoutIntervalForRequest и timeoutIntervalForResource, в чём их разница.
3️⃣ Как обрабатывать сетевые ошибки.
4️⃣ Когда именно следует воспользоваться проверкой доступности сети (спойлер, нужен NWPathMonitor).
😃 iOS Dev8 000
🎉 В Foundation открыли исходный код и теперь каждый iOS-разработчик лично может его улучшить
Сегодня произошло важнейшее событие, анонс которого ранее появлялся в нашем канале.
🛠 В Apple выпустили в открытый доступ репозиторий, целью которого является создание унифицированной реализации Swift Foundation для всех платформ.
Многие типы, в том числе
JSONEncoder, Calendar, TimeZone и Locale, являются совершенно новыми реализациями Swift.
🆕 FormatStyle и ParseStyle впервые доступны с открытым исходным кодом.
Качество и производительность - две самые важные цели в проекте.
Позднее в этом году ожидается реализация на Swift дополнительных важных базовых API, таких как URL, Bundle, FileManager, FileHandle, Process, SortDescriptor, SortComparator и других.
Реализация на Swift обеспечивает важные преимущества по сравнению с C и Objective-C.
Например, FormatStyle показал значительное улучшение на 150% в тесте форматирования со стандартным шаблоном даты и времени.
Foundation приветствует вклад сообщества, включая исправления ошибок, тесты, документацию и переносы на новые платформы.
И лично вы тоже можете поучаствовать.
😃 iOS Dev8 000
Последняя возможность попасть на обучение iOS в Школу Мобильной Разработки от Академии Яндекса🔥
За 3 месяца обучения вы прокачаете профессиональные скиллы, пообщаетесь с экспертами и другими увлечёнными студентами, погрузитесь в задачи IT-индустрии. Участие в школах бесплатное, занятия можно совмещать с работой или учёбой.
Обучение состоит из двух этапов:
🔸 Первый этап (8 недель) — онлайн-часть с лекциями, семинарами и практическими занятиями;
🔸 Второй этап (4 недели) — офлайн-часть в офисах Яндекса: непрерывный хакатон и работа в командах над реальными проектами.
Школа абсолютно бесплатная. На втором этапе для студентов из других городов компания оплатит перелет и проживание. После Школы у каждого студента есть возможность пройти отбор на стажировку или в штат по фаст-треку.
🌐 Чтобы попасть в школу, надо подать заявку и сделать тестовое. Прием заявок и тестовых открыт до 27 апреля включительно. Сами занятия начнутся в начале лета.
Этот проект отличная возможность прокачать свои навыки, а уже после этого можно побороться и за призы в соревнованиях.
😃 iOS Dev
8 000
Выход из зоны комфорта
Когда-то (на самом деле не так давно), я писал большой пост про необходимость базы и знания алгоритмов в нашей работе.
В канале Льва я увидел одну интересную активность (кстати, тут есть ещё и неплохая подборка задач).
Когда часть наших коллег говорит, что алгосы не нужны, они по-своему правы. В повседневной жизни не нужно писать алгоритм Дейкстры для покраски кнопок, с другой стороны, если вы говорите, что ни разу не работали с графами - вспомните об иерархии UIView и попробуйте ответить на этот вопрос ещё раз.
💨 Последние пару недель я пробую свои силы в контесте coderun, не ставя цель войти в топ-20, а скорее с целью решить столько задач, сколько получится.
Оказалось, что некоторые средние (или даже сложные задачи) могут быть проще лёгких, особенно если попробовать мыслить нестандартно, или если их разбить на подзадачи (казалось бы, какая тут связь со спринтами на нашей работе).
Конечно, без большого опыта в нахождении нужных алгоритмов непросто, и мне уже не раз казалось, что можно сдаться.
Сейчас мне кажется, что я достиг личного максимума, и чтобы решить что-то ещё, нужно сделать один маленький шаг, чтобы перейти на новый уровень.
Рекомендую вам поучаствовать и проверить, готовы ли вы вникать в непростые условия, вписываться в таймлимит и учитывать выделяемую память.
🌐 Попробовать свои силы можно здесь. Но пожалуйста, не обсуждайте решения задач с другими, ведь для самурая главное это путь (ещё и правила это запрещают).
😃 iOS Dev - поставьте какую-нибудь реакцию, если вам будет интересно почитать решения самых интересных задач после контеста
8 000
Книжная подборка для продвинутых разработчиков Swift от легендарного автора
📖 Flight School — это серия книг, в которой рассматриваются основные темы разработки для iOS и macOS с помощью кратких и целенаправленных руководств.
В 2018 году решение о создании такой подборки принял Mattt (без сомнений, легендарный разработчик). Он проработал 3 года в Apple техническим писателем, участвуя в написании языков программирования
Swift, Swift Package Manager и Swift.org.
До этого Мэтт основал NSHipster (который лично я поставил бы если не первым, то в топ-3 ресурсов для обязательного ознакомления), еженедельное издание для разработчиков iOS и macOS, и поддерживал несколько библиотек с открытым исходным кодом, включая Alamofire и AFNetworking (думаю, вы не раз слышали о таких).
На данный момент в подборке доступно три бесплатные книги:
1️⃣ Flight School Guide to Swift Strings - полный справочник по работе с текстом в Swift и Foundation.
2️⃣ Flight School Guide to Swift Numbers - все, что вам нужно знать о работе с числами в Swift.
3️⃣ Flight School Guide to Swift Codable - эта книга предлагает всесторонний обзор всех аспектов Codable, начиная с основ и заканчивая изучением множества продвинутых тем с помощью увлекательных примеров проектов.
😃 iOS Dev8 000
AttributedString в Swift: форматирование текста и создание собственных стилей
🧐 Создание красивых приложений зависит не только от изображений — оно также распространяется и на текст.
Различные стили строк с атрибутами могут сделать информацию более выразительной.
📖 В этом руководстве вы узнаете о том, как работать с
AttributedString и использовать расширенные возможности, включая форматирование с помощью Markdown.
😃 iOS Dev8 000
👩💻 Что нового в Swift 5.8: все особенности и пример playground
Недавно состоялся релиз Swit 5.8, который, к слову, включён в Xcode 14.3.
Вкратце основые изменения перечислены ниже:
🔘 Swift 5.8 позволяет начать поэтапную подготовку проектов для Swift 6, используя новые функции. Чтобы включить функцию, нужно передать флаг компилятора
-enable-upcoming-feature
🔘 Прокачали реализацию Result builder.
🔘 Обновили экосистему, в том числе Swift-DocC и Swift Package Manager.
🔘 В выпуске SwiftSyntax вместе со Swift 5.8 теперь содержится полностью переписанный синтаксический анализатор, полностью реализованный на Swift. Новый парсер имеет ряд преимуществ.
📖 Детальный разбор новинок можно посмотреть здесь.
📖 А вот тут есть материал с разбором новых атрибутов, например @preconcurrency и hasAttribute.
🛠 Бонуc: пример Playground от Пола Хадсона, демонстрирующий новые фичи.
😃 iOS Dev8 000
Опыт собеседований в Facebook: System Design и возможный путь обсуждения
📖 Во время собеседования по System Design испытуемого попросили разработать мобильное приложение.
Фокус и упор был конкретно на архитектуру мобильного приложения, а затем интервьюер переходил к многочисленным деталям.
Если один из раундов содержит system design, важно не пропустить следующие базовые вещи (мне кажется, и для интервьюера тоже):
1️⃣ Вы не можете спроектировать всё приложение за 20 минут. Задайте уточняющие вопросы, на какой части архитектуры нужно сделать акцент. В дальнейшем вопросы будут задавать уже вам.
Стоит уточнить условия для возможной нагрузки, безопасности, потенциальном расширении кодовой базы (и привлечении коллег в будущем).
2️⃣ Начните с базового прототипа. Здесь важно правильно разделить архитектуру по слоям (какой класс за что будет отвечать), можно от самого верхнего уровня и спускаться ниже.
3️⃣ Масштабируемость. Во время собеседования по системному дизайну для инженеров, проектирующих серверную часть, нужно знать о таких концепциях, как фермы серверов и сети с балансировщиками нагрузки и уровнями кэширования. При проектировании архитектуры приложения нам нужно думать о схожих концепциях и идеях.
4️⃣ Безопасность. Это огромная, иногда важнейшая часть приложения, и даже если мы не специалисты в области криптографии, мы должны обладать базовым набором навыков, которые помогут защитить пользователя (и нас тоже).
5️⃣ Кэширование. Существует множество различных механизмов и идей кэширования. Например, изображения обычно кэшируются в памяти. Приложение для обмена сообщениями более эффективно извлекает изображения из памяти, а не загружает их каждый раз (телеграм не исключение).
6️⃣ Автономная работа приложения. Её необходимость и доступность конечно же, будут связаны с предыдущим пунктом.
Вектор развития диалога может пойти как в глубину, так и в ширину в зависимости от требуемых знаний.
Это лишь один из концептов и сценариев, по которому можно побеседовать, но в целом это важный навык, и на мой взгляд — для позиций выше мидла основополагающий.
😃 iOS Dev
8 000
Инструмент апгрейда arm64-бинарников для запуска на Apple Silicon iOS Simulator
📖 В интересном исследовании последствий отключения розетты (и что с этим делать) Антон Грачёв наткнулся на любопытную утилиту.
Без долгих разговоров: она умеет прокачивать либу для запуска на симуляторе.
Основная идея в том, что если бинарник поддерживает архитектуру arm64 и может работать на устройстве, то с помощью этой утилиты можно сделать версию, которая подходит для запуска в симуляторе на машинах с Apple Silicon.
⚠️ Как человек, который работает в том числе и над защитой данных, хочу предупредить в очередной раз: использование любых опенсорсных продуктов должно быть тщательно взвешено.
В этих двух материалах разработчики либы пишут об этой идее и своих шагах:
1️⃣ Hacking native ARM64 binaries to run on the iOS Simulator.
2️⃣ Hacking native ARM64 binaries to run on the iOS Simulator - the dynamic framework edition.
⬇️ Сам инструмент доступен здесь, а простой способ всё-таки запустить ваш проект без серьёзных изменений вот тут.
😃 iOS Dev
8 000
🚀 TradingView ищет iOS разработчика.
Стек:
UIKit, SwiftUI, Combine, async-await, SPM, iOS 15+
Продукт:
Более 10 миллионов загрузок по всему миру. Наши решения используют Тинькофф, Forbes, Revolut, Interactive Brokers, S&P Global.
Место работы:
Офисы в Тбилиси, Санкт-Петербурге и Ростове-на-Дону, помощь с релокейтом
👉 Если у тебя 2+ лет опыта пиши @janemanolis
😃 iOS Dev
8 000
Пример создания музыкального плеера с использование MusicKit и Apple Music API
🎹 Если вы задумывались, как управлять воспроизведением мультимедиа с помощью MediaPlayer, то следующий материал точно пригодится.
📖 В этой статье приводится пример создания приложения на базе
API Apple Music.
🛠 Финальный проект на github.
😃 iOS Dev8 000
Реализация «написанной от руки» анимации с использованием svg, path и контрольных точек
На гифке вы можете увидеть практически культовую анимацию слова Hello, показанную на презентации Apple Spring 2020.
К сожалению, SwiftUI не имеет встроенной функции для достижения этого эффекта, поэтому для её воссоздания всё придётся делать с нуля.
📖 В этом материале автор рассказывает о своём опыте повторения такой анимации с помощью конвертации svg в SwiftUI и о необходимых преобразованиях.
🛠 А вот тут есть рабочий пример.
😃 iOS Dev
8 000
Итоги конкурса Технотекст - 2022 на хабре, Яндекс с Yatagan на коне!
😎 Наконец-то подвели итоги конкурса технических статей за прошлый год.
Победили две статьи в корпоративных блогах:
🏆По сумме баллов Yatagan от Яндекса и по техническим критериям Kotlin Symbol Processing.
Я рад, что попробовал свои силы и пусть не удалось получить наивысший балл по сумме, но III место отличный результат.
Приятно, что жюри оценило насыщенность техническим фишками и отсутствие «воды» (и по этому критерию показатель среди остальных статей максимальный).
🥳 Ну а Яндекс с ятаганом вновь оказался на коне, с чем мы его и поздравляем, опенсорсные продукты это большая ответственность и высокая значимость для сообщества.
📖 Все итоги доступны тут, а сам протокол с оценками здесь.
😃 iOS Dev
8 000
Настройка различных Launch Screen на основе схемы URL
⏳Основная цель добавления лончскрина — сократить время ожидания пользователя, показывая «часть интерфейса» во время загрузки приложения.
Но что делать, если ваше приложение поддерживает deep links, а первый экран изменяется на основе схемы URL?
При таких условиях важно определить, какой экран следует показывать.
📖 В этой статье объясняется, как корректно добавлять и изменять ключи
UILaunchScreens в зависимости от заданных условий.
Кстати, есть несколько базовых советов для ускорения запуска приложения.
👩🎓 А если хотите узнать, чем различается холодный и теплый запуски приложения, то можно обратить внимание и на этот пост.
😃 iOS Dev
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
