TGViewer
Channel Public Channel
iOS Mobile | YeaHub

iOS Mobile | YeaHub

@yeahub_ios_mobile

Теория, подготовка к интервью и курсы для iOS разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Subscribers
248
Photos
405
Videos
36
Links
586

Showing posts older than #385 · Back to latest

Older Posts 15 shown
Post #381 78
#полезное
😇 Profile and optimize power usage in your app

Очень крутая сессия про профилирование использования батареи приложением - вся функциональность блекнет на фоне быстро садящегося телефона.

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

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

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

🟠Используйте инструменты Xcode, такие как Energy Gauges, XCTest и MetricKit, для мониторинга и оптимизации энергопотребления на всех этапах разработки и после выпуска приложения.

👉Новости 👉База вопросов
Post #380 54
#полезное
😊 Reaper — фреймворк для обнаружения неиспользуемого кода в рантайме

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

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

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

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

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

👉Новости 👉База вопросов
Post #379 54
#полезное
🤓 Типобезопасная и удобная обработка ошибок в Swift 6

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

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

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

👉Новости 👉База вопросов
Post #378 81
#Собес #ios
🤔 Какие проблемы многопоточности встречаются на iOS?

Типичные проблемы:
• Состояние гонки
• Взаимные блокировки
• Неправильный доступ к UI
• Утечки памяти из-за циклов удержания

👉Новости 👉База вопросов
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
Post #377 58
#полезное
😴 Dependency Injection in iOS with SwiftUI

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

В SwiftUI, хотя фреймворк поощряет композицию и простоту, использование DI может улучшить вашу архитектуру — особенно по мере роста приложения.

👉Новости 👉База вопросов
Post #376 58
#полезное
😵‍💫 Кто такой senior-разработчик

Тот, кто проработал больше 5 (10) лет? Тот, кто лучше всех знает, как устроен компилятор? Человек, который лучше всех пишет код?

А что вообще значит «лучше»?

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

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

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

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

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

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

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

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

А умение формулировать свои мысли — важно не только в разработке, но и в жизни.


👉Новости 👉База вопросов
Telegram YeaHub Главные новости и обновления платформы YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников. Платформа: https://yeahub.ru Для связи: @ruslan_kuyanets
Post #373 55
#полезное
🛞 What’s new in UIKit

🟠 UIKit теперь поддерживает автоматическое отслеживание Observable объектов, что упрощает синхронизацию пользовательского интерфейса без необходимости вручную вызывать setNeedsLayout.

🟠 В iOS 26 представлен новый дизайн с материалом Liquid Glass, который обновляет стандартные компоненты UIKit и улучшает навигационные переходы.

🟠 UIKit теперь позволяет интегрировать сцены SwiftUI с помощью нового протокола UIHostingSceneDelegate, что упрощает совместное использование UIKit и SwiftUI в приложениях.

🟠 UIKit расширяет поддержку HDR, позволяя создавать HDR цвета и использовать их в UIColorPickerViewController, что улучшает визуальные эффекты в приложениях.

🟠 Введен новый метод updateProperties для UIView и UIViewController, который позволяет более эффективно обновлять свойства без лишних проходов по макету.

👉Новости 👉База вопросов
Post #371 50
#статьи
👋 Детали про Foundation Model

Главная вещь, которую нужно понимать про локальную LLM, встроенную в iOS – она достаточно маленькая и слабая по современным меркам, особенно в плане размера окна контекста, всего 4096 токенов. Это значит, что относиться к ней стоит не как к карманному ChatGPT, а скорее как к умному форматтеру свободного текста в структурные данные.

👉Новости 👉База вопросов
Ronnie Rocha - iOS Developer & AI Engineer WWDC 2025: Apple’s On-Device Foundation Model Is Here.. But Is It Any Good? - Ronnie Rocha - iOS Developer & AI Engineer I’ve been an Apple “fanboy” for almost 20 years now. Ever since I got my first MacBook Pro back in 2005. I’ve been developing for iOS for the past 15 of those years, and every June, I get excited for WWDC like it’s Christmas morning. 🤓 This year? Honestly…
Post #370 51
#полезное
👍 Работа с таймером в AlarmKit

Одним из фреймворков, представленных на WWDC, стал AlarmKit.

Для интеграции необходимо выполнить всего пару простых шагов (и добавить ключ NSAlarmKitUsageDescription).

📖 В этом туториале можно посмотреть на пример настройки проекта вместе с Live Activity (для локскрина и Dynamic Island) и познакомиться с возможностям конфигурации.

👉Новости 👉База вопросов
Post #369 51
#полезное
😇 Почему view обновляются в SwiftUI — простой совет для дебага

Есть подход, особенно полезный при отладке обновлений вьюх в SwiftUI, который заключается в вызове внутреннего метода Self._printChanges() из body (вместо вызова print).

Это позволяет узнать, какое именно свойство вызвало обновление (и записать эту инфу в консоль).

Кроме указания имен свойств, @self отмечает изменение значения view, а @identity - изменение идентичности вью.

Когда-то давно этот способ был приватным API, но сейчас его можно найти и в доках.

👉Новости 👉База вопросов
Post #368 47
#Собес #ios
🤔 Какой минимальный таргет iOS используется для SwiftUI?

SwiftUl появился в iOS 13, поэтому минимальный таргет для использования базовых возможностей - iOS 13. Некоторые новые фичи SwiftUl требуют iOS 14, 15 или 16, но для базового UI достаточно iOS 13.

👉Новости 👉База вопросов
Post #367 48
#статьи
📞 Про observation в UIKit

Apple внезапно завезли Observable в UIKit, причем сразу же до iOS 18. Так вот, нашел более подробную статью с разбором того, как он работает, какие ограничения есть, и как избежать просадок перфоманса.

👉Новости 👉База вопросов
Peter Steinberger Automatic Observation Tracking in UIKit and AppKit: The Feature Apple Forgot to Mention | Peter Steinberger Discover how iOS 18's hidden automatic observation tracking brings SwiftUI-like reactive programming to UIKit and AppKit, making your UI code cleaner and more maintainable.
Post #365 52
#полезное
👨‍💻 Макрос Playground: Запуск фрагментов кода в Xcode canvas
Небольшое но приятное нововведение в Xcode 26 - макрос #Playground для запуска фрагментов кода и превью в Xcode canvas.
🟠Макрос #Playground позволяет быстро экспериментировать с кодом без необходимости определения отдельного кода.
🟠Макрос #Playground можно использовать в любом месте файлов Swift, что делает его полезным дополнением к рабочему процессу.
🟠bitdrift предоставляет инструмент для наблюдения по запросу, созданный специально для мобильных команд.
🟠Новый макрос #Playground является отличным инструментом для быстрого экспериментирования с кодом проекта.
🟠Для работы с макросом #Playground необходимо импортировать фреймворк Playgrounds.
Звучит в качестве примеров использования библиотек прямо из кода. Было бы здорово чтобы разработчики библиотек это начали использовать.

👉Новости 👉База вопросов
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →