Мобильный трудоголик – Telegram
Мобильный трудоголик
1.44K subscribers
65 photos
10 videos
290 links
Пишу простым языком об iOS разработке на Swift и мобильной разработке в целом.
Обо мне: https://news.1rj.ru/str/hardworkerIT/3
Чат: @hardworkerChatIT
Канал про разработку и жизнь в ИТ: @itDenisov
Вакансии по мобильной разработке: @mobileDevJobs
Download Telegram
🤔 Правда ли что 10% ИТ специалистов ничего не делают на работе? И почему это зачастую не их вина?

Цифра в 10% — условна, но феномен "простоя" в IT существует. Почему так происходит?

1️⃣ Руководитель ≠ Менеджер.
Когда руководитель погружен исключительно в тех. задачи и игнорирует управленческие функции, команда остаётся без руля. Нет планирования, приоритизации, контроля загрузки. Результат: часть команды перегружена, часть — в простое, потому что задачи распределяются хаотично или не распределяются вовсе.

2️⃣ Хаос вместо ролей.
Отсутствие четкого распределение задач и путаница в ролях. Один сотрудник тонет в задачах, пока другой ищет, чем бы заняться. Это не вина кого-либо из сотрудников, а провал менеджмента в организации рабочих процессов.

3️⃣ Избыточный найм.
Компания нанимает специалистов "про запас" на перспективный (но еще не запустившийся) проект. Люди месяцами сидят "на скамейке запасных" без реальных задач, получая зарплату.

4️⃣ Не достанься ты никому.
"Хватай, чтобы не ушел к другим!". Практика переманивания или удержания талантов на всякий случай, даже без конкретной задачи. Встречается реже, но все еще бывает. Результат тот же — талант простаивает.

5️⃣ Проектный вакуум: "Задачи нет, потому что проекта нет".
Вы готовы работать, запросы отправлены, но заказчик тянет время, не дает обратную связь или проект приостановлен. Команда в подвешенном состоянии без четких задач. или же проект в вечном "обсуждаем": Команда формально назначена на проект, но он месяцами висит на стадии обсуждения, ТЗ, согласований. Люди числятся в проекте, но реально делать нечего.

Что делать?
🏢 Компаниям: Укреплять Project / Resource Management, реалистично планировать найм, развивать менеджерские навыки у руководителей, оптимизировать процессы продаж и старта проектов.
👨‍💻 Сотрудникам на "бенче": Использовать время для обучения, внутренних инициатив, практики на пет-проектах. Но помните: длительный простой без развития — тревожный сигнал о системных проблемах в компании.

💡 Вывод:
В большинстве случаев "ничегонеделание" — симптом системных сбоев.

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

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👀6🤯2
🔢 Что такое @StateObject в SwiftUI? Чем @StateObject отличается от @State?

✍️ Особенности @StateObject:
🔸 Используется для классов (ObservableObject).
🔸 При обновлении View объект сохраняется.
🔸 Часто используется для ViewModel, сетевых сервисов и т.д.
🔸 Объект инициализируется один раз.

♣️ Пример использования @StateObject:

@StateObject var viewModel = MyViewModel()


✍️ Особенности @State:
🔸 Для простых значений: используется для примитивов (Int, String, Bool) и структур (Struct).
🔸 Локальное хранение: данные живут только внутри этой View и не предназначены для передачи в другие экраны.
🔸 Может инициализироваться и перезаписываться множество раз.

♣️ Пример использования @State:

@State private var value = 0


💡 Главное отличие:
@StateObject - для сложных зависимостей, @State - для локальных данных View.

⚠️ Важно:
🔸 Для дочерних View используйте @ObservedObject с @StateObject родителя.
🔸 @StateObject не теряет данные при обновлении интерфейса.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1951
🔨 Бета версию Xcode 26 можно поставить на релизную версию macOS.

При этом релизную версию Xcode удалять не обязательно.

Apple обещает, что в новой версии проекты будут загружаться быстрее до 40%.
Кроме того, компания заявила, что Xcode теперь будет занимать на 24% меньше места на диске. - это не может не радовать.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍51
👨‍💻 Честно о минусах работы в IT.

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

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

1️⃣ Знания устаревают невероятно быстро – то, что работало 2 года назад, сегодня уже не катит. Постоянная учеба – это не развитие, а обязательное условие просто остаться на плаву. Выгорание от вечной "догонялки" – реальная угроза.

2️⃣ Код-костыль, написанный когда-то "на время" код, копится годами. Он замедляет разработку, делает каждое изменение рискованным и дорогим, и живет в проекте как постоянная угроза, которая вот-вот взорвется.

3️⃣ Современные инструменты скрывают сложность (абстракция). Когда что-то ломается глубоко внутри, найти причину – это детектив с расследованием "магии", которую ты не создавал и плохо понимаешь.

4️⃣ Тебе постоянно приходится объяснять сложные технические вещи (почему что-то сломалось, сколько времени займет) людям, которые в этом не разбираются. То, что им кажется простым (например, "сделай баннер"), на деле может требовать огромной работы с твоей стороны. "Просто баннер" для них может означать недели работы и переделку архитектуры для тебя.

5️⃣ Code Review. Процесс улучшения кода часто превращается в арену для демонстрации превосходства, придирок к мелочам и споров о вкусах , а не по существу проблемы.

6️⃣ Адские сроки, ночные марафоны перед релизом - классика жанра. Умение работать в стрессе важно, но цена – хроническая усталость и риск профессионального выгорания. Баланс work-life – постоянный челлендж.

7️⃣ Сидячий Образ Жизни: 8+ часов за монитором – убийственно для спины, шеи, глаз и общего здоровья. Если не заниматься спортом и эргономикой – последствия гарантированы. Как бонус, у вас чаще всего не бывает возможности заниматься спортом, потому что после работы идет еще работа.

8️⃣ Удалёнка. Удобно, но влечет за собой размытие границ между работой и личной жизнью, отсутствие живого общения, зависимость от качества интернета и самодисциплины. Иногда хочется просто "выйти с работы", а возможности нет.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👀19👍7🫡1
🍏 🏋️ Мое приложение для рассылки постов в социальных сетях - Social Poster.

В далеком 2018 году я решил разработать приложение Social Poster (SP) для автоматизации публикации объявлений по продаже б/у смартфонов в ВК группах (барахолках) и чатах объявлений в Telegram, что вручную занимало много времени.

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

Изначально разработка велась на Java под Android, но в 2021 году, после того как в приложении зарегистрировалось более трех тысяч пользователей, я решил переписать его на кроссплатформенном фреймворке Flutter под iOS и Android и добавить ряд новых функций. Серверную часть для приложения также разрабатывал самостоятельно на PHP.

📱 Приложение Social Poster одно из первых моих приложений, которое я разработал на Flutter.

📊 На данный момент приложение имеет более 17 тысяч скачиваний в магазинах приложений.

📱 📱 Приложение доступно в магазинах приложений

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍208🔥1
🔢 📱 Swift и Java: первые шаги к совместимости.

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

🤔 Что это значит?
🔸 Двусторонняя совместимость: вызов Java-кода из Swift и наоборот.
🔸 Постепенное расширение: Swift медленно, но верно выходит за границы экосистемы Apple.
🔸 Конкуренция с Kotlin: Swift начинает занимать нишу мультиплатформенных решений (хотя полноценный KMM-аналог пока не обещают).

Ограничения:
🔸 Пока только ранний прототип — не для продакшена.
🔸 Нет поддержки всех фич Java/Swift.
🔸 Требует ручной настройки.

⚠️ Кому это нужно?
🔸 Разработчикам под Android, которые хотят использовать Swift.
🔸 Кроссплатформенным проектам — потенциально меньше дублирования кода.
🔸 Энтузиастам, тестирующим границы Swift.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤔7🔥3👀2
📱 Apple обновила маску для иконок в iOS 26.

На изображении видно отличие от маски прошлых версий iOS.
Please open Telegram to view this post
VIEW IN TELEGRAM
👀20👍6🤔2
🔢 Swift: masksToBounds VS clipsToBounds в UIKit.

Если кратко: clipsToBounds — используется для вью, masksToBounds — для слоя.

clipsToBounds:
🔸 Используется для UIView.
🔸 Контролирует обрезку дочерних вью (subviews).
🔸 Если значении true — всё, что выходит за границы родителя, будет скрыто.

♣️ Пример использования clipsToBounds:

let myView = UIView()
myView.clipsToBounds = true // обрезаем subviews


masksToBounds:
🔸 Используется для CALayer.
🔸 Контролирует обрезку контента слоя (изображения, тени, закруглении).
🔸 При значении true — обрезает всё, включая тени и выходящие за границы части изображения.

♣️ Пример использования masksToBounds:

let myLayer = CALayer()
myLayer.masksToBounds = true // обрезаем изображение/тень
myLayer.cornerRadius = 10 // закругляем углы, будет работать если masksToBounds является true


➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍185🫡2
🔨 ChatGPT доступен в Xcode.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥7👀3
🔢 Модификаторы доступа в Swift.

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

private:
Доступ только внутри текущей области видимости ( класса или структуры). Полная изоляция реализации.

fileprivate:
Доступ в пределах одного файла. Полезно для скрытия логики, используемой несколькими типами внутри одного файла.

internal:
Доступ во всём модуле. Виден везде, но не за его пределами. Данный доступ используется по умолчанию, если модификатор доступа не указывается в явном виде.

public:
Доступ из других модулей, но без возможности наследования или переопределения.

open:
Полная доступность, можно использовать наследование и переопределение даже в сторонних модулях.

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

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

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2292
📚 Новый тренд ИИ на ближайшие годы.

На конференции ЦИПР Сергей Голицын (руководитель направления ИИ, Т1) обозначил ключевой тренд: промышленный ИИ, который становится неотъемлемой частью рабочих процессов. Прогноз: в ближайшие 3 года инвестиции в этот сектор могут превысить вложения в финтех.

⚠️ Что сейчас в приоритете у компаний?

👨‍⚕️ ИИ-ассистенты для специалистов:
Цифровые помощники для инженеров, юристов, врачей, которые автоматизируют рутинные задачи (анализ данных, поиск информации, составление отчетов).

📑 Автоматизация работы с документами:
Системы на базе ИИ для обработки договоров, технической документации, отчетности — от распознавания текста до извлечения смысла.

🔸 Инструменты MLOps / AutoML / LLMOps:
Платформы для ускоренного развертывания, управления и масштабирования машинного обучения (ML) и больших языковых моделей (LLM) с минимизацией ручного кода.

💎 Гибридные подходы:
Комбинация генеративного ИИ (создание текстов, кода, изображений) с классическими ML-алгоритмами для точных прогнозов (например, предсказание поломок оборудования), оптимизации логистики и проектирования.

📊 Прогнозы до 2027 года:
🔹 Более 50% промышленных компаний начнут активно использовать генеративный ИИ.
🔹 Мультимодальные ИИ-модели (одновременно анализирующие текст, звук, изображения и данные с датчиков) значительно улучшат точность прогнозирования.
🔹 Интеграция ИИ с VR/AR-технологиями повысит безопасность на опасных производствах (например, контроль действий сотрудников в реальном времени, обучение в симуляторах).

💡 Главный вывод:
ИИ перестает быть «пилотным проектом» и становится стратегической инфраструктурой. Компании, которые не интегрируют его в ядро процессов, рискуют потерять конкурентоспособность.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👀8🤔2🗿2
🔣 SF Symbols: иконки от Apple для твоих приложений.

SF Symbols — это библиотека системных иконок, созданных Apple для всех платформ (iOS, macOS и др.). Они идеально сочетаются со шрифтом San Francisco, обеспечивая единый стиль интерфейса.

Ключевые особенности:
🔹 4000+ иконок в едином стиле.
🔹 Автоматическая адаптация под размер и вес текста.
🔹 Поддержка анимации и кастомизации (цвет, толщина линий).
🔹 Нативная интеграция с UIKit и SwiftUI.

Для использования необходимо скачать приложение на официальном сайте Apple. В приложении доступен поиск и просмотр иконок.

♣️ Пример использования в UIKit:
let myImageView = UIImageView(frame: .zero)
myImageView.image = UIImage(systemName: "wifi")
myImageView.tintColor = .blue


♣️ Пример использования в SwiftUI:
Image(systemName: "wifi")  
.font(.system(size: 30, weight: .bold))
.foregroundColor(.blue)


SF Symbols — must-have для разработчиков под экосистему Apple. Экономит время и улучшает дизайн!
Есть только один минус: требует iOS 13 и выше.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
22👍11🔥4
😖 Массовые увольнения - наша новая реальность.

Глава компании Anthropic, Дарьо Амодеи, спрогнозировал, что в ближайшие 1-5 лет ИИ заменит около половины всех молодых специалистов. В фазу риска профессии в IT, юриспруденции, консалтинге, финансах, аналитике, документообороте и других сферах, где сейчас работают сотни тысяч.

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

Amazon, Microsoft, Walmart стремятся к оптимизации и автоматизации бизнес процесс уже сокращают тысячи рабочих рук.

Платформы вроде LinkedIn отмечают тревожную тенденцию: исчезают "начальные ступени" карьеры – позиции для младших разработчиков, юристов-стажеров, операторов поддержки. СЕО обсуждают заморозку найма в ожидании полной автоматизации. Резкий перелом прогнозируют уже в 2025 году.

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

Однако все согласны: действовать нужно незамедлительно.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👀25🗿10🤯7
Deadlock и Livelock: чем опасны и как избежать.


⚠️ Deadlock — это тупик.
Когда два потока блокируют друг друга, бесконечно ожидая освобождения ресурсов, которые каждый из них удерживает.

♣️ Пример:
Поток 1: держит доступ к базе и ждёт сетевой ответ.
Поток 2: держит сеть и ждёт доступ к базе.

Как предотвратить:
🔹 Устанавливайте строгий порядок блокировки ресурсов.
🔹 Используйте асинхронные вызовы вместо синхронных.


⚠️ Livelock — это бег на месте.
Ситуация, при которой два или более потока не могут выполнять полезной работы по причине борьбы за общий ресурс.

♣️ Пример:
Два потока постоянно меняют флаг "готовности", но реальной работы не происходит.

Как исправить:
🔹 Добавляйте случайные задержки между повторными попытками.
🔹 Используйте семафоры для контроля доступа.
🔹 Используйте барьеры.


💡 Главное отличие:
Deadlock — полная остановка, Livelock — активность без прогресса.

🔢 В Swift особенно актуально при работе с:
🔸 GCD
🔸 OperationQueue
🔸 Новыми Actor-ами

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2411🔥4
Укажите ключевое слово, которое используется в Swift для создания параметра только для чтения
Anonymous Quiz
11%
readonly
0%
var
19%
const
70%
let
👍24🔥12🫡5
🔢 Типы в Swift.

В Swift типы данных делятся на именованные (собственные) и составные (временные).

Именованные типы:
Это типы, которые объявляются явно и получают своё имя. К ним относятся: структуры, классы, перечисления, протоколы.

♣️ Пример:

struct MyStruct {
let name: String
}

class MyClass {
let value: Int

init(value: Int) {
self.value = value
}
}


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

♣️ Пример:

let coordinates: (x: Int, y: Int) = (10, 20)

let doPrint: (String) -> Void = { print($0) }


⚠️ Когда что использовать?
🔸 Именованные — когда нужна чёткая структура и повторное использование.
🔸 Составные — для временных данных или сокращения кода.

💡 Составные типы упрощают код, но злоупотреблять ими не стоит — это может снизить читаемость кода.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2211🔥5
🔢 Дженерики в Swift: мощный инструмент для гибкого кода.

Generics — это механизм, который позволяет писать универсальные функции и типы, работающие с любыми типами данных, сохраняя при этом полную типобезопасность.

🤔 Зачем нужны дженерики?

🔹 Уменьшают дублирование кода:
Больше не нужно писать отдельные функции для Int, Float и других типов — один обобщённый вариант заменит их все.

🔹 Обеспечивают типобезопасность:
Компилятор проверяет типы на этапе компиляции, предотвращая ошибки в рантайме.

🔹 Повышают переиспользуемость:
Один алгоритм можно применять к разным типам данных без изменений.

⚠️ Как работают дженерики?

Дженерики используют параметры типа (обычно обозначаются <T>, <Element> и т. д.), которые заменяются конкретными типами при компиляции.

♣️ Пример использования:

func plusValue<T: Numeric>(first: T, second: T) -> T {
return first + second
}

let a = 5
let b = 10
print(plusValue(first: a, second: b)) // 15

let c = 0.5
let d = 3.0
print(plusValue(first: c, second: d)) // 3.0

//

struct Stack<Element> {
private var elements = [Element]()

mutating func push(_ element: Element) {
elements.append(element)
}

mutating func pop() -> Element? {
return elements.popLast()
}
}

var intStack = Stack<Int>()
intStack.push(1)

var stringStack = Stack<String>()
stringStack.push("Swift")


Ограничения дженериков:

Иногда нужно указать, что тип T должен соответствовать определённым требованиям. Для этого используют протоколы:


func plusValue<T: Numeric>(first: T, second: T) -> T {
return first + second
}


Здесь T должен являться числом (Numeric), иначе код не скомпилируется.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2213🔥5
👨‍💻 Каких разработчиков никогда не заменят ИИ?

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

1️⃣ Разберись, как и на чем компания зарабатывает. Какие части — драйверы роста и прибыли? Почему? Как ваша команда влияет на общий успех? Без этого контекста решения в вакууме.

2️⃣ Подружись с менеджером продукта. Большинство PM просто мечтают, чтобы инженеры глубже погружались в продукт! Сначала инвестируй время в отношения, покажи искренний интерес. Тогда твои вопросы о стратегии и пользователях будут восприняты с энтузиазмом.

3️⃣ Не ограничивайся кодом. Узнай, как люди на самом деле используют продукт, смотри обращения в поддержку, общайся с дизайнерами, аналитиками и другими. Они видят боль пользователей и работу продукта в реальности.

4️⃣ Предлагай, а не только реализуй. Зная бизнес, продукт и стейкхолдеров — прояви инициативу! Выдвигай обоснованные фичи или улучшения (пусть даже мелкие в рамках текущей таски). Для крупных идей — покажи инженерные и продуктовые усилия/выгоды, чтобы их легко можно было приоритизировать.

5️⃣ Мысли шире стандартных "фича vs. техдолг". Предлагай варианты, где продуктовые решения (например, чуть иной UX) могут значительно снизить инженерные усилия без потери ценности. Обсуждай эти варианты с командой и PM.

6️⃣ Проси фидбэк о своем продуктовом росте. Быть Product-Minded Engineer — значит развивать навыки продукта параллельно с инженерными. Лучший человек для обратной связи здесь — твой PM. Спрашивай: "Насколько полезны мои предложения?", "Где мне расти в продуктовом мышлении?".

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2713🔥7
🍏 Apple в России загнали в угол!

Госдума приняла закон, обязывающий предустанавливать RuStore на ВСЕ продаваемые смартфоны и планшеты — включая технику Apple!

С 1 сентября (как раз к выходу iOS 26!) продавать iPhone и iPad можно будет только при условии, что на них можно устанавливать и обновлять приложения через RuStore.

Apple придется срочно решать: пойти на беспрецедентные уступки российским требованиям или рисковать штрафами.

Однако депутат Антон Горелкин объяснил, что никак запрещать продажи iPhone и iPad в случае неисполнения закона не планируется.

🤔 Верим?

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
🗿24👀14🤯8
🔢 @EnvironmentObject в SwiftUI.

@EnvironmentObject — это property wrapper, который позволяет передавать общие данные между несколькими View без явной передачи через инициализатор.

🤔 Как использовать:

♣️ Создаем ObservableObject:

class UserSettings: ObservableObject {
@Published var isDarkMode = false
}


♣️ Добавляем в Environment в корневом View:

@main
struct MyApp: App {
var settings = UserSettings()

var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(settings) // Передаем объект в корневой вью
}
}
}


♣️ Используем в любом дочернем View:

struct ProfileView: View {
@EnvironmentObject var settings: UserSettings // Автоматическая подписка на объек в сабвью

var body: some View {
Toggle("Темная тема", isOn: $settings.isDarkMode)
}
}


⚠️ Ключевые особенности:
🔸 Автоматическое обновление: View перерисовывается при изменении @Published свойств.
🔸 Глобальный доступ: объект доступен в любой части иерархии View без цепочки @Binding.
🔸 Безопасность: если объект не передан в .environmentObject(), приложение крашнется — это помогает находить ошибки на раннем этапе.

Когда использовать?
🔹 Для глобальных настроек (тема, язык, авторизация и т.д.).
🔹 Когда нужно делиться данными между несвязанными View.
🔹 Вместо долгих цепочек @Binding / @ObservedObject.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍116
🍏 Apple нарушает свои же правила.

Рекламные пуши добрались и до Wallet. Пользователи iOS сообщают о получении рекламных push-уведомлений от приложения Wallet. Уведомления предлагали скидку на билеты к фильму Apple TV+ «Формула-1».

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

Интересно, что в свежей бета-версии iOS 26 уже обнаружилась настройка для отключения этих самых «Рекламных предложений» в Wallet.

➡️ Подписаться на канал
Мобильный трудоголик
Please open Telegram to view this post
VIEW IN TELEGRAM
🗿22🤯12🔥5👀2