iOS Dev
Открыть в Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Больше7 877
Подписчики
-424 часа
+27 дней
-5430 день
Архив постов
7 877
Работа с вёрсткой в SwiftUI: интерактивный помощник
Оказывается, есть целый сайт, где энтузиасты объясняют как быть с лэйаутом в SwiftUI с помощью примеров.
Уже сейчас покрыты темы с
Alignment, HStacks, Aspect Ratio, Padding и так далее.
Будет полезен новичкам (и тем, кто иногда забывает, на что влияет тот или иной параметр).
💡Вообще, это было бы актуально не только для SwiftUI, но и для некоторых штук в UIKit, как с UIStackView, например.
📖 Посмотреть на доступные варианты (и поперетаскивать элементы) можно здесь.
😃 iOS Dev7 877
Подготовка к собеседованиям
Любое собеседование — это важный этап, который должен быть диалогом между кандидатом и собеседующим.
Для кандидата, конечно же, это стресс. Но его можно попробовать сделать управляемым.
Всегда плюс, когда человек может пояснить, почему он принимает то или иное решение, почему выбирает вот эту архитектуру и как именно некоторые участки кода могут повлиять на производительность.
Мы не можем подготовиться к собеседованию на 100%, у каждой компании свои требования и правила.
У многих может быть и 3 (и иногда 6-7 этапов), но при должной концентрации и грамотном распределении сил вы сможете показать ваш пул знаний, даже не ответив на все заданные вопросы.
🧠 Сегодня я анонсирую новый раздел в для тех, кто поддерживает канал.
На хабре пару лет назад я делился одним из возможных пулов вопросов, сегодня этот раздел будет дополнен, расширен, но до окончательной огранки ему пока далеко.
Здесь уже есть три основных категории: собесы в формате видео (лучшее на просторах интернета), истории реальных собеседований в бигтехе и огромный список ресурсов для подготовки.
🔗 Получить доступ ко всем ресурсам можно здесь.
😃 iOS Dev
7 877
Разбор архитектурных заблуждений в iOS
Алексей, iOS-разработчик из тинькова, поднял восхитительно опасную, но при этом не менее интересную тему.
Вот несколько тезисов, с которыми лично сложно не согласиться:
1️⃣ С точки зрения коммерческой разработки наилучшая архитектура — та, что максимально снижает затраты на разработку в долгосрочной перспективе.
Этого подхода я стараюсь придерживаться и в нашей команде. MVC, MVVM, VIPER — это архитектурные шаблоны (больше вот тут). Часто одного шаблона попросту недостаточно.
Например, сететой слой, пуши или как говорит Алексей, обработка диплинков - MVC-подобные паттерны про это не сообщают.
2️⃣ Разработка — это не только написание кода.
Мы создаём код, но его чтение, понимание, а также процессы в команде — занимают львиную долю времени.
3️⃣ В UI логику не держим или?
С выходом AsyncImage сама Apple показала, что можно доверить загрузку картинок и UI-слою.
4️⃣ Вывод: при планировании архитектуры больше внимания стоит уделять не простоте написания, а простоте чтения кода и внесения изменений.
Меня радует, что даже в крупных командах (около 80 человек) не пытаются писать код ради кода.
Наша задача — решать сложные вопросы с помощью программирования, но помните, что слишком много оптимизации на ранних стадиях — может оказаться не лучшим способом.
Будет здорово, если ещё кто-то прочитает про правило трёх.
📖 Обсуждение статьи.
✅А о правиле трёх (и других моментах) можно прочесть в моём закрытом ноушне.
😃 iOS Dev
7 877
Спасибо всем, кто подписался на бусти всего за один день, это отличный катализатор к развитию премиум-материалов в лучшем доступном виде.
При работе над своими рабочим проектом и контентом для канала за годы у меня накопилось огромное количество материала, которым я так и не поделился здесь.
Иногда это слишком узкие знания, иногда мне кажется, что порог входа может быть выше ожидаемого. Так или иначе, но знания должны быть структурированы.
За прошедший месяц я начал наполнять свой отдельный Notion избранными исследованиями, подборками и самым разным контентом. Кроме этого, пообщавшись со Львом, выяснил, что Notion — формат, которым пользуются и другие блогеры.
Поэтому решение выглядит верным.
Я уже разбил структуру на блоки, которые мне кажутся важными: подготовка к собеседованиям, разбор полётов (узкие, но при этом необходимые темы для роста, и даже выделил отдельную подборку для эффектов).
Кто читает канал давно, тот знает, что иногда я реализую клёвые штуки (c загадками Да Винчи).
☕️ Пока что подписка по стоимости захода в кофейню.
А в качестве бонуса всем, кто подпишется хотя бы на 6 месяцев на Мастер, доступ будет навсегда (а может и не только им, кто знает).
😃 iOS Dev
7 877
Как сделать сompletionHandler намного безопаснее?
Прежде, чем посмотреть на результат исследования, взгляните на первый скриншот, и подумайте, что здесь можно сделать лучше.
📖 Винсент справедливо отмечает, что при использовании оператора defer гарантированно вызовется completionHandler непосредственно в конце функции.
И именно поэтому возможно юзать result, поскольку к тому времени у него 100% будет значение.
😃 iOS Dev
7 877
📌 Важная новость
На протяжении долгого времени в нашем канале я делился самыми разными вещами (и хардкорными, и доступными для новичков).
Каждый автор контента знает, что если разбираться в коде (а я не допускал ни одного поста без предварительной проверки), требуется приличное количество времени, которого не так уж и много. Особенно при условии, что вы фулл-тайм разработчик.
Включал викторины, уникальные истории и старался рассказать о новостях, используя призму своего опыта.
В этом канале не было какой-то странной или непонятной рекламы (а вещей, которым я не доверяю, всё также не будет в дальнейшем).
При этом периодически у меня спрашивают, можно ли как-то поблагодарить за контент или поддержать творчество.
Отвечу сразу на эти вопросы: теперь такая возможность есть.
🐱 Сегодня я анонсирую iOS IQ, мой аккаунт на бусти — концентрированные знания в доступном виде.
И, поскольку я не люблю донаты ради донатов, а при этом постоянно поддерживаю разработчиков советами и решением нетривиальных задач, это это будет регулярно обновляемый контент с понятными ответами на сложные вещи.
Я долго думал об уровнях поддержки, но остановился на трёх: База, Мастер и Архитектор.
Каждый из них обладает своими плюсами, но даже начального будет достаточно.
Если вам нравится контент канала, вам удобен такой стиль изложения и вы хотели бы расставить точки над i в понятии iOS, то я буду рад каждому.
А ещё небольшой бонус, каждому из тех, кто меня поддержит — будет доступна возможность комментирования постов в канале iOS Dev.
Уже сегодня.
Авторов с практическим опытом не так много, а контента — ещё меньше.
Поэтому приходите, и получайте контент в удобном для вас виде. И кстати, если пока не готовы поддержать творчество финансово, подписывайтесь всё равно.
❤️❤️❤️❤️❤️➡️На бусти.
Уверен, что смогу вас удивить.
😃 iOS Dev
7 877
📌 Подборка полезных материалов про SwiftData
По использованию SwiftData уже появилось множество статей и примеров использования, поэтому я решил вынести некоторые из них в специальный список, с помощью которого можно ориентироваться по многим интересующим вопросам.
➡️Отслеживание изменений данных в SwiftData.
➡️Архитектурный дизайн SwiftData и возможности миграции.
➡️Вопросы и ответы про SwiftData и CoreData.
➡️ Удаление данных в SwiftData.
Видео и обзорные туториалы
📺 Видеокурс по SwiftData.
📺 Официальное видео от Apple с примером использования.
📖 Кто ты, SwiftData — большая статья с обзором концепций SwiftData от Андрея Зонова на хабре.
📖 SwiftData на примерах (создание проекта, контейнеров, моделей данных и связей, разбор архитектуры).
📖 Руководство по SwiftData для начинающих.
Практические примеры
🛠 Пример реализации todo-приложения на github.
🛠 FaceFacts - приложение, используюещее SwiftUI и SwiftData с исходным кодом.
🛠 Приложение для коллекционирования сниппетов кода.
🛠 Создаём приложение для заметок.
😃 iOS Dev
7 877
Гибкая обработка ошибок в Swift
Полезно знать несколько способов обработки, чтобы выбрать лучший подход в зависимости от контекста приложения.
📖 Вот тут можно познакомиться с типами, ключевыми словами и вариантами обработки кастомных ошибок.
😃 iOS Dev
7 877
Делегирование в Swift: определение и примеры
Паттерн «делегат» уже давно занимает одно из важнейших мест на платформах Apple.
Делегирование используется для всего, начиная от обработки событий таблицы с помощью
UITableViewDelegate и заканчивая изменением поведения кэша с помощью NSCacheDelegate.
Основная цель паттерна — позволить объекту общаться со своим владельцем в свободном (можно сказать, что отсоединённом) виде.
Не требуя от объекта знать конкретный тип его владельца, мы можем писать код, который гораздо проще повторно использовать и поддерживать.
Хотя это довольно простая в использовании концепция, у новичков могут быть вопросы по использованию.
📖 Рекомендую ознакомиться с этой статьёй, чтобы узнать больше о примерах использования (и возможных минусах).
😃 iOS Dev7 877
Камерный митап для мобильных разработчиков, где каждый может предложить свой кейс для обсуждения по трем трекам: iOS, Android, Flutter.
Участники митапа — техлиды, руководители разработки и ведущие мобильные разработчики из команд Яндекс Go и Яндекс Про. В завершении вечера afterparty — нетворкинг, настолки, вкусная еда и напитки.
Место встречи: Москва-Сити, башня «Око»
Дата и время: 15 февраля, 18:30
Бесплатно. Количество мест ограничено. Регистрация обязательна
Подробнее
Реклама. ООО "Яндекс.Такси" ИНН 7704340310
7 877
Подробное описание диспетчеризации в Swift
Понимание, как Swift выполняет вызовы функций — один из необходимых навыков в нашей работе.
Как и следует из определения, Method Dispatch — это то, как программа выбирает, какие инструкции нужно выполнить при вызове метода, и это то, что происходит каждый раз, когда вызывается тот или иной метод.
Знание видов и характеристик важно для повышения производительности кода.
Поэтому хорошо бы разбираться в том, чем, например, отличается Static dispatch от Dynamic dispatch.
Кстати, диспетчеризация методов добавляет уникальности Swift: если большинство языков поддерживают несколько подходов к диспетчеризации, то Swift поддерживает их все (⚪️).
📖 Делюсь потрясающим разбором типов диспетчеризаций, примеров и отличий.
Кстати, из этой статьи вы также узнаете, зачем для Realm (которая сейчас называется Atlas Device SDK) для свойств объектов нужно добавлять
@objc dynamic.
😃 iOS Dev7 877
🤩 Новая топ-фича Xcode: сохранение скриншота напрямую из Preview
Пока сообщество обсуждает новый язык пикл (ему в будущем ещё будет уделено должное внимание) и особенности Vision Pro, я хочу рассказать о действительно крутой инновации, которая может кардинально изменить процесс создания скриншотов.
В общем, в бете Xcode 15.3 появилась опция создания скрина прямо в режиме превью (как же долго мы это ждали).
Для этого достаточно перейти в
Editor > Canvas > Export Preview Screenshot (или можно скопировать напрямую, не верю, что Apple и это сделала). Супер-удобно (и да, сохранить можно сразу в нужном разрешении).
😃 iOS Dev7 877
💸Динамика зарплат разработчиков во второй половине 2023 года
Во втором полугодии 2023 года зарплаты выросли в большей части языков программирования.
😎 Самый ощутимый рост зарплат был у разработчиков в Objective-C и С++ — на 21%, до 379 000 и 200 000 ₽ соответственно.
При этом, для Swift-разработчиков в медиане всё осталось по-старому, произошло только незначительное снижение на 2%, до 245 000 ₽.
В среднем больше всего в компаниях платят в Авито (медиана 325 000 ₽), в пятёрке также Лаборатория Касперского и VK.
📖 Больше аналитики доступно здесь.
😃 iOS Dev
7 877
Интеграция интерактивных 2D/3D-объектов в iOS-приложение
В этой статье Степан из SimbirSoft разбирает, как можно реализовать интерактивный логотип целыми тремя способами (от плоского изображения к объёмному объекту).
Полезно ещё и потому, что здесь отличный пример работы с жестами.
🛠 Код проекта доступен здесь.
📖 Ознакомиться с материалом можно на хабре.
😃 iOS Dev
7 877
Так ли плохи курсы?
Ключевой момент любого обучения в том, какую долю времени и под какой нагрузкой вы обучаетесь самостоятельно.
В ВУЗе львиную долю обучения занимает поиск инструментов и то, как вы приспосабливаетесь к незнакомым глобальным направлениям (например, начертательная геометрия или электротехника).
Безусловно, социализация, да и в целом вырабатываемые навыки общения это огромный плюс по сравнению с курсами, которые чаще всего происходят в онлайне.
Несмотря на это, при значимой базе преподавателей и тех, кто непосредственно формирует учебный план, некоторые курсы могут дать фору по количеству концентрированного материала по сравнению с двумя (иногда и тремя) семестрами в университетах.
Основной минус при этом — отсутствие государственной аккредитации (очень часто), и обучение одной ветви навыков.
Поэтому, например, для того, чтобы узнать что-то новое в интересующем направлении — короткий спринт обучения будет с более высоким приоритетом.
И в этом случае выбор между курсами (в том числе онлайновыми) и 4 годами обучения (минимум) очевиден.
Однако если вы только в начале пути, даже средний ВУЗ будет лучшим вариантом, так как преподаватели там улучшали свою учебную программу годами, если не десятилетиями.
И даже программирование микроконтроллеров на ассемблере это не зря и не так страшно, так как именно в этом случае и можно понять, как многое работает под капотом на самом деле.
😃 iOS Dev
7 877
🟥 Солнце, море и подводные камни iOS-разработки
Приглашаем на бесплатный интенсив по мобильной разработке от Яндекса и «Сириуса» в Сочи!
В марте собираем мобильных разработчиков на берегу Черного моря. Обновите знания о быстро развивающемся Swift, поработайте в команде с экспертами Яндекса, напишите приложение и просто классно проведите весенние вечера в Сочи.
Чем интересен интенсив
Лекциями, семинарами и обилием практики. Собрали всё, что нужно знать, чтобы с нуля написать мобильное приложение для iOS. Участники пройдут все этапы работы над проектом: от продумывания идеи и экранов до распределения задач, настройки CI и код-ревью. Лучших студентов мы пригласим стать стажерами или сотрудниками Яндекса.
Кого ждем
Студентов бакалавриата, магистратуры и аспирантуры, которые планируют заниматься мобильной разработкой на iOS. Подробнее о необходимых навыках можно узнать здесь.
Место и время
С 18 по 29 марта в научно-технологическом университете «Сириус» на федеральной территории Сириус в Сочи.
🥕 Обучение, проезд, проживание и питание на время интенсива предоставит университет «Сириус».
Подайте заявку и решите тестовое до 4 февраля: https://clck.ru/38R7kA
7 877
Шикарный эффект с использованием SpriteKit
Конечно, при должном скилле Metal может удивить даже самых скилловых разработчиков, но и на SpriteKit можно делать красоту.
🤩 Как, например, это сделал Toni Lijic в гифке, которую вы видите.
🛠 Приятный бонус для подписчиков нашего канала — исходный код, где показано, как это можно настроить.
😃 iOS Dev
