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

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

#ios #mobile #swift
加入频道
Типобезопасная и удобная обработка ошибок в Swift 6

Swift 6 привнес в язык новую интересную возможность: typed throws. С помощью этого изменения можно определить, какие типы ошибок может выбрасывать функция.

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

📖 В этом посте можно посмотреть на пример кастомного протокола ошибок и на два кейса использования в Swift 6.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥21👍1183
Reaper — фреймворк для обнаружения неиспользуемого кода в рантайме

В качестве примера разработчики приводят историю уменьшения кодовой базы Duolingo на целый процент (или 10 000 строк кода).

Он поддерживает все классы, написанные на Objective-C, большинство non-generic классов Swift и некоторые structs/enums Swift.

Инструмент от Emerge tools (теперь он опенсорс как и FaultOrdering) определяет набор используемых классов, а каталог Scripts в этом репозитории содержит программу для определения набора всех возможных типов, которые может обнаружить reaper. Разница между этими наборами - неиспользуемые типы.

➡️ О влиянии фреймворка на перфоманс можно почитать здесь, а к бинарнику это добавит <20 килобайт.

📖 Статья с примерами и разбором для iOS (и Android) доступна вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
819🔥12👍84❤‍🔥31🏆1
GM Shaders — подборка материалов по изучению шейдеров от новичков до профессионалов

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

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

От математики и примеров функций до решения частых ошибок при работе с шейдерами (и как их избежать).

Также статьи разбиты на три блока: для новичков, любителей и про.

Напомню, что в iOS IQ можно посмотреть на большую подборку необычных анимаций (и узнать несколько советов).

🔗 Warp-эффект на metal-шейдере
🔗 Beauty infinite loop
🔗 Огненный шейдер

Код всех реализаций есть 💰 тут и ⭐️ тут.


😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥1713❤‍🔥84👍2💯11
This media is not supported in your browser
VIEW IN TELEGRAM
История настроек Mac — интерактивный сайт о Control Panel и не только

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

Так было с появлением swipe-to-unlock, размером иконок в iPhone или, например, с Core Graphics.

Знали ли вы, что есть сайт, на котором есть целая коллекция ПО (и релизов осей в целом) для Macintosh и NeXT, которые легко доступны через веб-браузер?

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

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

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

📖 Прочитать всю историю можно тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
715❤‍🔥77🔥51👍11
Большое обновление для iOS IQ - уже на проверке в App Store

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

В личные сообщения часто приходят приятные отзывы (спасибо за них ♥️) и даже предложения сделать его платным - но у меня такой цели нет.

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

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

А сегодня я хочу анонсировать новую ветку в проекте.

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

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

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


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

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

Если вы хотите первым его попробовать, напомню, что такая возможность существует 💰 на бусти и ⭐️ прямо здесь.

А если вы хотите ускорить выход обновления в App Store - поддержите этот пост.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1025❤‍🔥13👏7👍52🔥1🫡1🆒1
Совместимость Swift и C++ на практике

Возможность полноценного взаимодействия с C++ была представлена в Swift 5.9.

Большое количество API на C++ можно вызывать непосредственно из Swift, а некоторые свифтовые API можно использовать из C++.

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

📖 В этом посте Artur Gruchała показывает, как можно вызывать функции C++, оборачивать классы и передавать сложные типы данных.

А ещё можно познакомиться и с особенностями сборки: от карты модулей и работы с заголовками до твиков SwiftPM/Xcode и лучших опциях управления памятью и обработки ошибок.

➡️ А большой гайд со всеми деталями есть на официальном портале swift.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍16115🔥3🤯2❤‍🔥1
Катализатор роста iOS-разработчика

В iOS я очень давно и видел такое, во что вы просто не поверите. Штурмовые корабли в огне на подступах к Ориону. Я смотрел, как Си-лучи мерцают во тьме близ врат Тангейзера. Все эти мгновения исчезнут во времени разные изменения не только в оси, но и в экосистеме на протяжении более чем десяти лет карьеры.

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

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

Например, когда-то для звонков мы использовали pjsip, но при обновлении стека всё-таки переключились на LiveKit (и там, и там есть свои плюсы и недостатки).

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

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

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

Язык программирования по факту всего лишь набор правил, эдакая знаковая система для общения с девайсом посредством инструкций. В своё время я писал и на python, и на c#, и на node.js, плюсы знаю чуть лучше, для пет-проектов до сих пор юзаю cloud functions гугла, умею разворачивать контейнеры в докере и юзал это для пары ботов — но всё это лишь способ достижения цели.

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

Не стоит верить, что AI за вас всё решит, и тем более - что это нельзя определить.

Я вижу, как многие вместо собственного мнения выдают два обрезанных предложения. А вместо решения задачи пишут статьи или хвалятся как AI сделал за минуту нечто (что невозможно поддерживать в будущем, да и не факт - что это нечто скомпилится).

Но иногда токенов может не хватить для полноценного ответа.

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

Цена на подписку будет только расти. Как и зависимость слишком полагающихся на неё специалистов.

А что будет с вашими знаниями?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
36❤‍🔥30🔥12🏆8👍443🤝3
96👍55🔥2👏2😎2🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект люминофора на SwiftUI+Metal

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

🤩 То, что получилось вы можете увидеть на гифке.

А исходный код на Swift по традиции уже доступен 💰 тут и ⭐️ тут.

Ещё примеры:

🔗 Warp-эффект на metal-шейдере
🔗 Beauty infinite loop
🔗 Огненный шейдер


😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1735🔥16❤‍🔥9🤩442👍2
Какой бы совет вы дали начинающему iOS-разработчику?

Сформулируйте вашу мысль одним предложением (можно картинкой).

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

Например:

Забудь про кейчейн, храни всё что можно в UserDefaults.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥14137👍2❤‍🔥1👌1🏆1🍓11
iOS Dev
Какой бы совет вы дали начинающему iOS-разработчику? Сформулируйте вашу мысль одним предложением (можно картинкой). За самый популярный (он может быть как актуальным и полезным, так смешным или вредным) будет символический подарок. Например: Забудь про…
🥇Победитель!

А вообще - посмотрите тред, там очень много хороших советов и размышлений о возможном пути начинающего разработчика на iOS (или не только на iOS)
Please open Telegram to view this post
VIEW IN TELEGRAM
8🤣60💯16😁134👍2🔥2👏22❤‍🔥1
Секретный способ для скругления и тени одновременно в UIKit

Все знают о сложности (и совсем не таком легком пути, как кажется) подобной задачи в UIKit.

Оказывается, среди недокументированного API (а значит, с шансом попадания под определённые риски) есть способ для реализации такого комбо.

CALayer позволяет юзать свойства для изменения rim, если назвать его попроще - ободка, но не границы (которого вы не найдёте в доках и даже AI вам в этом не поможет).

Можно настраивать ширину, цвет (обратите внимание, нужен именно cgColor) и прозрачность.

view.layer.setValue(true, forKey: "softRim")
view.layer.setValue(20, forKey: "rimWidth")
view.layer.setValue(UIColor.yellow.cgColor, forKey: "rimColor")
view.layer.setValue(1.0, forKey: "rimOpacity")


Большая разница по сравнению с border, которая рисуется внутрь, этот ободок позволяет расширять наше вью и добавлять эффект снаружи.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥38🤩9🏆96👍2👏21
This media is not supported in your browser
VIEW IN TELEGRAM
😳 Макбук как весы — приложение для macOS на Github

Я не мог пройти мимо этого репозитория!

TrackWeight – это приложение, которое превращает MacBook в весы с помощью датчиков давления Force Touch.

Под капотом либа Open Multi-Touch Support (от Такуто Накамуры) для получения приватного доступа ко всем событиям мыши и трекпада в macOS.

Среди объяснений, почему это вообще работает: трекпад MacBook не совсем обычный, по факту это датчик силы нажатия с тактильными эффектами (поэтому мы чувствуем ощущение щелчка).

🛠 Репозиторий на GitHub (уже 2 000 звёзд).

За такие штуки мы и любим разработку, разве нет?

📊 Кстати, напомню, что с помощью Swift Charts можно играть в Pong.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥57🤩14135👍4❤‍🔥1🏆1🍓1
Apple только что представили Retention Messaging API

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

С помощью нового API можно выбрать, какое сообщение показывать пользователям, когда они просматривают инфу о подписке и могут отменить ее.

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

Всего 4 опции: текст, текст+картинка, сообщение о переходе на новый план с текстом и другой подпиской, а также рекламный оффер с текстом и скидкой (или другим уровнем).

📖 Вся документация уже доступна здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥2613👏8👍22❤‍🔥1💯1