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

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

#ios #mobile #swift
Download Telegram
Слушайте, недавно же Telegram выкатил новую штуку — шаринг папок, и я просто не могу не показать свой список!

🤩 Топовые ресуры по iOS-разработке.

Тут представлены и крутые сообщества (привет Coffee&Code) и авторы книг — все, что нужно для более простого и в то же время широкого изучения iOS.

Выбирайте то, что нужно прямо сейчас, или отфильтруйте потом:

🔗 Всё, что нужно для разработки в одном списке.

UPD. Если по нажатию на ссылку не появляется выбор каналов, то обновите Telegram до последней версии 😎

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉19❤‍🔥76😐5👍3🔥1👏1😁1🫡1🆒1💘1
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация эффекта Parallax в SwiftUI с использованием CoordinateSpace

Хэдеры в Parallax-стиле — это популярный вариант дизайна, который можно использовать для создания визуально привлекательных интерфейсов в мобильных приложениях.

Такой эффект создает иллюзию глубины и движения при использовании скролла пользователем.

📖 Тут есть пример реализации на SwiftUI.
📷 Для гифки использовал эту картинку.

📖 А вот тут можно узнать и другой способ создания такого эффекта.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍165🔥2🎉2👏1🤩1💯1
Тут вот какое дело.

Этот канал был создан более трёх лет назад, но начал развиваться только в 2022. Об этом ниже.

Я Виктор Грушевский — автор этого канала, в iOS-разработке с 2011 года (примерно тогда был переход с iOS 4 на iOS 5).

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

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

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

Можно сказать, что я технарь до мозга костей, но, поверьте, всё куда сложнее.

Одно из качеств, которые считаю своей сильной стороной — упорство (в разумной степени). Например, в CodeRun. В нашей с вами жизни не всегда удаётся побеждать, но главное начать, разве нет?

Иногда я делюсь своими проектами с сообществом: например, решением для управления отзывами (и локализациями) или полузабавным способом посмотреть распределение ваших файлов в проекте. А игроки в спортивное ЧГК скорее всего знают о знатоке.

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

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

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

Я против токсичности, против обмана и навязанных мнений.

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

Для этого и нужен этот канал.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
100👍37🔥13❤‍🔥4👏2🤗2🤔1🌚1🏆1
Измерение производительности приложений iOS в Uber: техники и советы

Для запуска приложения инженеры специально измеряют продолжительность холодного запуска приложения, которая состоит из создания первого процесса приложения, инициализации main.swift, различных сетевых вызовов для получения контента в реальном времени и первого прохода рендеринга для отрисовки экрана.

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

В дополнение к вышеперечисленному команда Uber создала конвейер данных для получения метрик частоты задержек и зависаний от Apple, что обеспечивает более глубокое понимание того, что происходит на уровне ОС.

📖 В этой исследовательской статье инженеры рассказывают, какие показатели производительности и какие инструменты и процессы были созданы.

Например, для измерения времени до main() в приложении после создания процесса используется вызов ядра Mach:

C/C++
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()};
struct kinfo_proc kp;
size_t size = sizeof (kp);
// Time in Microseconds
kp.kp_proc.p_starttime.tv.sec * 1000000 + kp.kp_proc.p_starttime.tv_usec


Из интересных решений: данные MetricKit не обрабатываются на клиенте, а отправляются в полуструктурированном формате JSON на серверную часть.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7👏32🤯1🎉1🆒1
Реализация мгновенного взаимодействия с pan-жестами

Это сложнее, чем кажется, поскольку UIPanGestureRecognizer не сразу распознает начало жеста.

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

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

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

Это около 0,75 секунды, что очень долго для жеста (на устройстве с частотой 120 Гц это 90 кадров, отображаемых до того, как ваш ввод будет распознан!).

📖 В этом материале Christian Selig (создатель Apollo — крутого клиента для Reddit) рассказывает о создании собственного распознавателя жестов, который работает поверх остальных и обходит проблему паузы при взаимодействии.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥114🤯3👏2🎉1💯1
Ranges в Swift: примеры и неочевидные моменты

Ranges позволяют нам писать элегантный код Swift с помощью операторов диапазона.

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

Важно понимать, когда и какой тип оператора диапазона стоит использовать, и как именно можно избежать неприятностей с index is out of range.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3💯311👏1🎉1
❗️Вышел Xcode 14.3.1 RC с важными фиксами

1️⃣ При сборках с 14.3 девайсы на iOS 13, использующие протоколы Objective-C из Swift, крашились при запуске.
С этой проблемой мы столкнулись и на рабочем проекте.

2️⃣ Исправили краш на iOS 15, связанный со Swift Concurrency.

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

🔗 Детально весь список обновлений здесь.

🛠 Скачать обновлённый Xcode уже можно на сайте.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥62🎉1🙏1💯1
Почему Apple запретила своим сотрудникам использовать ChatGPT и другие нейросети

Некоторое время назад я писал, почему использование ChatGPT мешает жить StackOverflow и не только.

Буквально сегодня в сторе появился официальный iOS-клиент, который уже на подступах к первым позициям во всех чартах. И как нельзя кстати появилась вот эта новость на базе информации от The Wall Street Journal.

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

Если инженеры Apple используют эти платформы, нет никакой гарантии, что их код (или ваш) не попадёт к кому-то другому или даже не будет использован конкурентами.

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

Apple не единственная компания, запретившая ChatGPT. Например, JPMorgan Chase и Verizon также ограничили использование таких платформ.

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

Так оно или нет, узнаем совсем скоро, WWDC приближается.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍973👏1💯1
Рендеринг сцены Моаны (мультфильма Диснея) менее чем за 10 000 строк кода Swift

После того, как Walt Disney выпустила описание сцены острова в Моане, были предприняты некоторые усилия по его визуализации помимо Диснеевского Hyperion.

Энтузиаст пошёл ещё дальше и выпустил собственный рендерер на Swift (с несколькими строками на C++ для вызова OpenEXR и Ptex).

📖 В большом исследовании он пишет, как пришёл к этому, какие оптимизации принял, и почему Swift оказался предпочтительным выбором.

📖 А в текущей версии он рассказывает, как он смог ускорить процесс рендеринга с 26 часов в начале до 78 минут.

🛠 Вы не поверите, но есть даже исходный код.

😃 iOS Devа что вы сможете делать с помощью Swift?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34🤯19👍65👏4🤩1🌚1💯1🫡1
🇯🇵 Apple Marunouchi в Токио

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

Он открылся в 2019 году и более чем половина из 130 сотрудников приехали сюда из разных районов Японии. А если сложить их знания, окажется, что работники могут помочь вам аж на 15 разных языках.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥36🔥15👍7😍42🤩2👏1💯1🤗1
🎈Сегодня мой День Рождения

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

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

Вообще у всех разный старт. И когда говорят, что Билл Гейтс бросил универ и стал миллиардером, уделите внимание его родителям: известному адвокату и члену совета директоров банка. Ах да, его дед был главной нацбанка США, но это мелочи.

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

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

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

Но знаете, через 10-20 лет о наших переработках будут помнить только близкие люди. А о рабочих подвигах только мы (возможно).

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

❤️ Спасибо, что читаете этот канал. Как и прежде, здесь я продолжу делиться своим опытом и знаниями.

Ну вот вы и нашли ключевое слово для шифра Виженера: iosdevcypher

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉172❤‍🔥3118🔥6👍4🏆3🙏1💘1