iOS Dev
7.52K subscribers
940 photos
64 videos
1 file
1.06K links
🍏Канал об iOS-разработке, необычных подходах и решениях.
👨‍💻Автор: Виктор Грушевский (@Viktorianec)
Темы:
⭐️ Подготовка к собеседованиям.
⭐️ Архитектуры и алгоритмы.
⭐️ Код. Много кода.

⚒️База знаний: https://boosty.to/ios_dev

#ios #mobile #swift
加入频道
Так ли плохи курсы?

Ключевой момент любого обучения в том, какую долю времени и под какой нагрузкой вы занимаетесь самостоятельно.

В ВУЗе львиную долю процесса занимает поиск инструментов и то, как вы приспосабливаетесь к незнакомым глобальным направлениям (например, начертательная геометрия или электротехника).

Безусловно, социализация, да и в целом вырабатываемые навыки общения это огромный плюс по сравнению с курсами, которые чаще всего происходят в онлайне.

Несмотря на это, при значимой базе преподавателей и тех, кто непосредственно формирует учебный план, некоторые курсы могут дать фору по количеству концентрированного материала по сравнению с двумя (иногда и тремя) семестрами в университетах.

Основной минус при этом — отсутствие государственной аккредитации (очень часто), и обучение одной ветви навыков.

Поэтому, например, для того, чтобы узнать что-то новое в интересующем направлении — короткий спринт обучения будет с более высоким приоритетом.

И в этом случае выбор между курсами (в том числе онлайновыми) и 4 годами обучения (минимум) очевиден.

Однако если вы только в начале пути, даже средний ВУЗ будет лучшим вариантом, так как преподаватели там улучшали свою учебную программу годами, если не десятилетиями.

И даже программирование микроконтроллеров на ассемблере это не зря и не так страшно, так как именно в этом случае и можно понять, как многое работает под капотом на самом деле.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Интеграция интерактивных 2D/3D-объектов в iOS-приложение

В этой статье Степан из SimbirSoft разбирает, как можно реализовать интерактивный логотип целыми тремя способами (от плоского изображения к объёмному объекту).

Полезно ещё и потому, что здесь отличный пример работы с жестами.

🛠 Код проекта доступен здесь.

📖 Ознакомиться с материалом можно на хабре.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
💸Динамика зарплат разработчиков во второй половине 2023 года

Во втором полугодии 2023 года зарплаты выросли в большей части языков программирования.

😎 Самый ощутимый рост зарплат был у разработчиков в Objective-C и С++ — на 21%, до 379 000 и 200 000 ₽ соответственно.

При этом, для Swift-разработчиков в медиане всё осталось по-старому, произошло только незначительное снижение на 2%, до 245 000 ₽.

В среднем больше всего в компаниях платят в Авито (медиана 325 000 ₽), в пятёрке также Лаборатория Касперского и VK.

📖 Больше аналитики доступно здесь.

А вот тут можно сравнить размеры зарплат полугодовой давности.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 Новая топ-фича Xcode: сохранение скриншота напрямую из Preview

Пока сообщество обсуждает новый язык пикл (ему в будущем ещё будет уделено должное внимание) и особенности Vision Pro, я хочу рассказать о действительно крутой инновации, которая может кардинально изменить процесс создания скриншотов.

В общем, в бете Xcode 15.3 появилась опция создания скрина прямо в режиме превью (как же долго мы это ждали).

Для этого достаточно перейти в Editor > Canvas > Export Preview Screenshot (или можно скопировать напрямую, не верю, что Apple и это сделала). Супер-удобно (и да, сохранить можно сразу в нужном разрешении).

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Подробное описание диспетчеризации в Swift

Понимание, как Swift выполняет вызовы функций — один из необходимых навыков в нашей работе.

Как и следует из определения, Method Dispatch — это то, как программа выбирает, какие инструкции нужно выполнить при вызове метода, и это то, что происходит каждый раз, когда вызывается тот или иной метод.

Знание видов и характеристик важно для повышения производительности кода.

Поэтому хорошо бы разбираться в том, чем, например, отличается Static dispatch от Dynamic dispatch.

Кстати, диспетчеризация методов добавляет уникальности Swift: если большинство языков поддерживают несколько подходов к диспетчеризации, то Swift поддерживает их все (⚪️).

📖 Делюсь потрясающим разбором типов диспетчеризаций, примеров и отличий.

Из этой статьи вы также узнаете, зачем для Realm (которая сейчас называется Atlas Device SDK) для свойств объектов нужно добавлять @objc dynamic.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Делегирование в Swift: определение и примеры

Паттерн «делегат» уже давно занимает одно из важнейших мест на платформах Apple.

Делегирование используется для всего, начиная от обработки событий таблицы с помощью UITableViewDelegate и заканчивая изменением поведения кэша с помощью NSCacheDelegate.

Основная цель паттерна — позволить объекту общаться со своим владельцем в свободном (можно сказать, что отсоединённом) виде.

Не требуя от объекта знать конкретный тип его владельца, мы можем писать код, который гораздо проще повторно использовать и поддерживать.

Хотя это довольно простая в использовании концепция, у новичков могут быть вопросы по использованию.

📖 Рекомендую ознакомиться с этой статьёй, чтобы узнать больше о примерах использования (и возможных минусах).

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Гибкая обработка ошибок в Swift

Полезно знать несколько способов обработки, чтобы выбрать лучший подход в зависимости от контекста приложения.

📖 Вот тут можно познакомиться с типами, ключевыми словами и вариантами обработки кастомных ошибок.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Подборка полезных материалов про SwiftData

По использованию SwiftData уже появилось множество статей и примеров использования, поэтому я решил вынести некоторые из них в специальный список, с помощью которого можно ориентироваться по многим интересующим вопросам.

➡️Отслеживание изменений данных в SwiftData.

➡️Архитектурный дизайн SwiftData и возможности миграции.

➡️Вопросы и ответы про SwiftData и CoreData.

➡️ Удаление данных в SwiftData.

Видео и обзорные туториалы

📺 Видеокурс по SwiftData.

📺 Официальное видео от Apple с примером использования.

📖 Кто ты, SwiftData — большая статья с обзором концепций SwiftData от Андрея Зонова на хабре.

📖 SwiftData на примерах (создание проекта, контейнеров, моделей данных и связей, разбор архитектуры).

📖 Руководство по SwiftData для начинающих.

Практические примеры

🛠 Пример реализации todo-приложения на github.

🛠 FaceFacts - приложение, используюещее SwiftUI и SwiftData с исходным кодом.

🛠 Приложение для коллекционирования сниппетов кода.

🛠 Создаём приложение для заметок.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Важная новость

На протяжении долгого времени в нашем канале я делился самыми разными вещами (и хардкорными, и доступными для новичков).

Каждый автор контента знает, что если разбираться в коде (а я не допускал ни одного поста без предварительной проверки), требуется приличное количество времени, которого не так уж и много. Особенно при условии, что вы фулл-тайм разработчик.

Включал викторины, уникальные истории и старался рассказать о новостях, используя призму своего опыта.

В этом канале не было какой-то странной или непонятной рекламы (а вещей, которым я не доверяю, всё также не будет в дальнейшем).

При этом периодически у меня спрашивают, можно ли как-то поблагодарить за контент или поддержать творчество.

Отвечу сразу на эти вопросы: теперь такая возможность есть.

🐱 Сегодня я анонсирую iOS IQ, мой аккаунт на бусти — концентрированные знания в доступном виде.

И, поскольку я не люблю донаты ради донатов, а при этом постоянно поддерживаю разработчиков советами и решением нетривиальных задач, это это будет регулярно обновляемый контент с понятными ответами на сложные вещи.

Я долго думал об уровнях поддержки, но остановился на трёх: База, Мастер и Архитектор.

Каждый из них обладает своими плюсами, но даже начального будет достаточно.

Если вам нравится контент канала, вам удобен такой стиль изложения и вы хотели бы расставить точки над i в понятии iOS, то я буду рад каждому.

А ещё небольшой бонус, каждому из тех, кто меня поддержит — будет доступна возможность комментирования постов в канале iOS Dev.

Уже сегодня.

Авторов с практическим опытом не так много, а контента — ещё меньше.

Поэтому приходите, и получайте контент в удобном для вас виде. И кстати, если пока не готовы поддержать творчество финансово, подписывайтесь всё равно на бесплатный уровень.

❤️❤️❤️❤️❤️➡️На бусти.

Уверен, что смогу вас удивить.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Как сделать сompletionHandler намного безопаснее?

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Спасибо всем, кто подписался на бусти всего за один день, это отличный катализатор к развитию премиум-материалов в лучшем доступном виде.

При работе над своими рабочим проектом и контентом для канала за годы у меня накопилось огромное количество материала, которым я так и не поделился здесь.

Иногда это слишком узкие знания, иногда мне кажется, что порог входа может быть выше ожидаемого. Так или иначе, но знания должны быть структурированы.

За прошедший месяц я начал наполнять свой отдельный Notion избранными исследованиями, подборками и самым разным контентом. Кроме этого, Notion - формат, которым пользуются и другие блогеры.

Поэтому решение выглядит верным.

Я уже разбил структуру на блоки, которые мне кажутся важными: подготовка к собеседованиям, разбор полётов (узкие, но при этом необходимые темы для роста, и даже выделил отдельную подборку для эффектов).

Кто читает канал давно, тот знает, что иногда я реализую клёвые штуки (c загадками Да Винчи).

☕️ Пока что подписка по стоимости захода в кофейню.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор архитектурных заблуждений в iOS

Алексей, iOS-разработчик из тинькова, поднял восхитительно опасную, но при этом не менее интересную тему.

Вот несколько тезисов, с которыми сложно не согласиться:

1️⃣ С точки зрения коммерческой разработки наилучшая архитектура — та, что максимально снижает затраты на разработку в долгосрочной перспективе.
Этого подхода я стараюсь придерживаться и в нашей команде. MVC, MVVM, VIPER — это архитектурные шаблоны (больше вот тут). Часто одного шаблона попросту недостаточно.
Например, сететой слой, пуши или как говорит Алексей, обработка диплинков - MVC-подобные паттерны про это не сообщают.


2️⃣ Разработка — это не только написание кода.
Мы создаём код, но его чтение, понимание, а также процессы в команде — занимают львиную долю времени.

3️⃣ В UI логику не держим или?
С выходом AsyncImage сама Apple показала, что можно доверить загрузку картинок и UI-слою.

4️⃣ Вывод: при планировании архитектуры больше внимания стоит уделять не простоте написания, а простоте чтения кода и внесения изменений.

Меня радует, что даже в крупных командах (около 80 человек) не пытаются писать код ради кода.

Наша задача — решать сложные вопросы с помощью программирования, но помните, что слишком много оптимизации на ранних стадиях — может оказаться не лучшим способом.

Будет здорово, если ещё кто-то прочитает про правило трёх.

📖 Обсуждение статьи.

А о правиле трёх (и других моментах) можно прочесть в моём закрытом ноушне.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Подготовка к собеседованиям

Любое собеседование — это важный этап, который должен быть диалогом между кандидатом и собеседующим.

Для кандидата, конечно же, это стресс. Но его можно попробовать сделать управляемым.

Всегда плюс, когда человек может пояснить, почему он принимает то или иное решение, почему выбирает вот эту архитектуру и как именно некоторые участки кода могут повлиять на производительность.

Мы не можем подготовиться к собеседованию на 100%, у каждой компании свои требования и правила.

У многих может быть и 3 (и иногда 6-7 этапов), но при должной концентрации и грамотном распределении сил вы сможете показать ваш пул знаний, даже не ответив на все заданные вопросы.

🧠 Сегодня я анонсирую новый раздел для тех, кто поддерживает канал.

На хабре пару лет назад я делился одним из возможных пулов вопросов, сегодня этот раздел будет дополнен, расширен, но до окончательной огранки ему пока далеко.

Здесь уже есть три основных категории: собесы в формате видео (лучшее на просторах интернета), истории реальных собеседований в бигтехе и огромный список ресурсов для подготовки.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с вёрсткой в SwiftUI: интерактивный помощник

Оказывается, есть целый сайт, где энтузиасты объясняют как быть с лэйаутом в SwiftUI с помощью примеров.

Уже сейчас покрыты темы с Alignment, HStacks, Aspect Ratio, Padding и так далее.

Будет полезен новичкам (и тем, кто иногда забывает, на что влияет тот или иной параметр).

💡Вообще, это было бы актуально не только для SwiftUI, но и для некоторых штук в UIKit, как с UIStackView, например.

📖 Посмотреть на доступные варианты (и поперетаскивать элементы) можно здесь.

А посмотреть, как можно подойти к реализации некоторых эффектов - вот тут.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Буст знаний iOS IQ: Обновления и новости

Я продолжаю работать над базой знаний iOS и делюсь обновлением за выходные.

Прозводительность приложений (вопросы с собеседований на размышление)

Когда приложение реагирует на жесты и касания в режиме реального времени, всё хорошо. Но приложения с зависаниями или дёрганым поведением на экране разрушают эту иллюзию.

Что можно сделать, чтобы это не происходило? А если вы столкнулись, то как реагировать? Эта тема безгранична, и именно с этим мы боремся на работе над нашими задачами.

🚦Узнать о том, какие шаги можно предпринять, можно здесь.

Наконец появился блок по коду и непосредственно разработке

В части алгоритмов я вынес карточки с примерами кода в зависимости от сложности, и нарисовал наглядно графики для каждой.

Разобрал акронимы (все же знают их значение?): SOLID, DRY, KISS, YAGNI.

И добавил бонус с разбором алгоритма сортировки в Swift.

Подписывайтесь, я продолжаю разбирать важные темы и делиться своими знаниями (и важными исследованиями) вот тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор ошибок начинающих iOS-разработчиков

Александра Башкирова указывает на несколько популярных ошибок начинающих iOS-разработчиков.

1️⃣ В первой части затронут раздел вёрстки и связанных с ней возможных проблем.

2️⃣ Во второй уделено внимание проблемам с написанием кода, в частности, избыточного форс-анрапа, работе с guard/switch и даже разбираются проблемы с утечками памяти (я писал о том, что к этому может приводить, и что можно предпринять).

📖 Статья, которую можно смело рекомендовать новичкам к прочтению доступна на хабре.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Как проверить число на чётность другим способом?

Представим, нам нужно красить ячейку в зависимости от индекса, или, например, менять шрифт у каждого чётного элемента (или ещё тысяча возможных ситуаций).

В таком случае мы, как и в большинстве языков, скорее всего будем использовать i % 2 == 0 (стандартный способ проверять остаток от деления).

Но знаете ли вы, что для такой ситуации подойдёт и нативный вариант на Swift?

x.isMultiple(of: 2) вернёт true если x чётный и false, если x нечётный.

Кстати, в Apple рассмотрели и корнер-кейсы, например:

x.isMultiple(of: 0)вернёт true, если x это 0 и false в любом другом случае.

🤩 Век живи — век учись, как говорится.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Алгоритмическая секция

Это страшный термин, который многих может остановить от попыток пройти серию собеседований в крупные компании.

Секция лайвкодинга это в том числе и психологическое испытание, непростое, но в то же время показывающее знания кандидата в необычных условиях.

К этому тяжело подготовиться, а ещё тяжелее конкурировать, ведь есть целая категория ребят, которые занимаются олимпиадным программированием ещё со школы (или даже раньше).

К счастью, чаще всего нам не нужно решать на работе олимпиадные задачи или участвовать в ICPC с целью выиграть золотые медали.

Несмотря на это, подготовка никогда не помешает, ведь даже чтобы обработать тысячи айдишников юзеров с заданным условием и не повесить приложуху, иногда нужно тщательно всё взвесить.

Поэтому я решил добавить в базу знаний алгоритмическую секцию, где будут не только популярные подходы и примеры алгоритмов на разные темы, но ещё и реальные задачи.

Я уже добавил несколько разделов, и перенёс часть своих решённых задач в ноушн.

Заходите, доступ пока что можно получить эксклюзивно здесь.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Enums 🤝 Дизайн-системы

Если вы работаете над крупными проектами, то наверняка встречали (или писали сами дизайн-системы).

По факту чаще всего это библиотека, которая объединяет дизайн в переиспользуемые компоненты, цвета, шрифты, иконки и так далее, помогая обеспечить единый стиль во всех ваших продуктах.

Или если ещё проще, они позволяют нам избежать изобретения велосипеда для каждого экрана.

Грамотно спроектированная дизайн-система сэкономит часы (или сотни часов в будущем).

📖 В этом материале Джейкоб Бартлетт рассказывает о своём опыте создания разных систем и объясняет, почему в итоге остановился на использовании перечислений.

🛠 А вот здесь можно посмотреть на код для этого проекта.

😃 iOS Dev🐱 Доступ к необычным эффектам
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня пятница, у многих выходной и я, надеюсь, что у вас будет две минуты свободного времени

Примерно раз в год я собираю обратную связь о своём канале и о том, что вам нравится или не нравится для того, чтобы прокачивать контент в правильном направлении.

К сожалению, за это время появилось множество тех, кто копирует материалы отсюда 1 в 1. Иногда удачно, иногда нет, но это касается не только подачи каких-то вещей, но и оформления канала.

Конечно, это ещё один повод искать правильные направления развития, но мне нужна ваша помощь.

🐾 Пройдите опрос (полностью анонимный) и помогите сделать выводы.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM