iOS Conf SG 2025: подборка докладов
В январе прошла одна из крупнейших конференций по iOS и новый набор лучших презентаций уже доступен.
Рекомендую обратить внимание на эти доклады:
📺 Isolation, actors, sendable… Глубокое погружение в параллелизм
Donny Wals рассказывает об изоляции (кстати, напомню про этот пост), акторах и многом другом, чтобы наконец разобраться, что на самом деле пытается сказать нам компилятор, когда выдает загадочную ошибку.
📺 Заблуждения про тестирование и как использовать тесты для более быстрой разработки
В этом выступлении Krzysztof Zablocki делится лучшими подходами к тестированию при работе над Sourcery, New York Times и Arc Browser.
📺 Создание приложений, которые выделяются
Klemens Strasser, который получил 2 номинации Apple Design Award и даже победу, делится своим опытом.
📺 10 лет Swift: что произошло за это время
Swift, который мы пишем сегодня, почти не похож на Swift, который мы писали, когда он появился 10 лет назад. Чему мы научились за это время и какие изменения еще предстоят? В этом докладе на эти вопросы пробует ответить Пол Хадсон.
📺 За пределами программирования: необходимые софт-скиллы для успешной карьеры в iOS
Спикер делится советами, как строить более прочные отношения, преодолевать трудности на рабочем месте и как софт скиллы способствуют профессиональному росту
🔗 Эти и другие доклады доступны здесь.
😃 iOS Dev
В январе прошла одна из крупнейших конференций по iOS и новый набор лучших презентаций уже доступен.
Рекомендую обратить внимание на эти доклады:
📺 Isolation, actors, sendable… Глубокое погружение в параллелизм
Donny Wals рассказывает об изоляции (кстати, напомню про этот пост), акторах и многом другом, чтобы наконец разобраться, что на самом деле пытается сказать нам компилятор, когда выдает загадочную ошибку.
📺 Заблуждения про тестирование и как использовать тесты для более быстрой разработки
В этом выступлении Krzysztof Zablocki делится лучшими подходами к тестированию при работе над Sourcery, New York Times и Arc Browser.
📺 Создание приложений, которые выделяются
Klemens Strasser, который получил 2 номинации Apple Design Award и даже победу, делится своим опытом.
📺 10 лет Swift: что произошло за это время
Swift, который мы пишем сегодня, почти не похож на Swift, который мы писали, когда он появился 10 лет назад. Чему мы научились за это время и какие изменения еще предстоят? В этом докладе на эти вопросы пробует ответить Пол Хадсон.
📺 За пределами программирования: необходимые софт-скиллы для успешной карьеры в iOS
Спикер делится советами, как строить более прочные отношения, преодолевать трудности на рабочем месте и как софт скиллы способствуют профессиональному росту
🔗 Эти и другие доклады доступны здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍19 9🔥5🎉3✍2👏2🎄1
Структурная идентичность в SwiftUI
В отличие от традиционных UI-фреймворков, когда мы вручную отслеживаем и обновляем элементы интерфейса, SwiftUI автоматически выполняет перерисовку, когда это необходимо.
Однако перерисовывать все подряд — неэффективно.
И поэтому нам может помочь структурная идентичность — с её помощью SwiftUI решает, какие вью действительно нужно перерисовывать, сохранив производительность.
📖 В этой статье Наташа Фадеева на примерах объясняет, в чем особенности такого подхода и какую роль играет идентичность, например, в списках.
😃 iOS Dev
В отличие от традиционных UI-фреймворков, когда мы вручную отслеживаем и обновляем элементы интерфейса, SwiftUI автоматически выполняет перерисовку, когда это необходимо.
Однако перерисовывать все подряд — неэффективно.
И поэтому нам может помочь структурная идентичность — с её помощью SwiftUI решает, какие вью действительно нужно перерисовывать, сохранив производительность.
📖 В этой статье Наташа Фадеева на примерах объясняет, в чем особенности такого подхода и какую роль играет идентичность, например, в списках.
Please open Telegram to view this post
VIEW IN TELEGRAM
8 18👍11🔥4🎄2❤🔥1⚡1👏1🎅1
Обнаружение и устранение зависаний в приложениях для iOS
📖 В этой статье рассмотрена одна из самых частых причин снижения производительности в iOS-приложениях.
Спойлер: причина в сложных вычислениях в главном потоке.
Рассказано, как обнаружить зависание используя App Hangs Detection и Instruments, смоделирован сценарий зависания интерфейса в проекте SwiftUI и продемонстрированы шаги для устранения этой проблемы.
✅ Большой разбор возможных кейсов проблем с производительностью, причин зависаний и способов предотвращения такого поведения есть 💰 тут и ⭐️ прямо здесь.
😃 iOS Dev
📖 В этой статье рассмотрена одна из самых частых причин снижения производительности в iOS-приложениях.
Спойлер: причина в сложных вычислениях в главном потоке.
Рассказано, как обнаружить зависание используя App Hangs Detection и Instruments, смоделирован сценарий зависания интерфейса в проекте SwiftUI и продемонстрированы шаги для устранения этой проблемы.
Please open Telegram to view this post
VIEW IN TELEGRAM
8 14👍7🔥7❤🔥3👏1🎉1💯1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Динамическая адаптация к доступному пространству с помощью ViewThatFits
Вкратце принцип работы следующий: ViewThatFits выбирает первое child view, чей идеальный размер по заданным осям впишется в предложенный размер.
Обычно это происходит в порядке от наибольшего к наименьшему, но, так как наше вью иногда может поместиться только вдоль одной оси, порядок может быть нарушен.
По умолчанию ViewThatFits ограничивается по горизонтальной и вертикальной осям.
📖 Неплохой пример использования ViewThatFits есть тут и в официальной документации.
😃 iOS Dev
ViewThatFits
- это компонент SwiftUI, доступный с iOS 16.Вкратце принцип работы следующий: ViewThatFits выбирает первое child view, чей идеальный размер по заданным осям впишется в предложенный размер.
Обычно это происходит в порядке от наибольшего к наименьшему, но, так как наше вью иногда может поместиться только вдоль одной оси, порядок может быть нарушен.
По умолчанию ViewThatFits ограничивается по горизонтальной и вертикальной осям.
📖 Неплохой пример использования ViewThatFits есть тут и в официальной документации.
Please open Telegram to view this post
VIEW IN TELEGRAM
10 20👍8👏5❤🔥3🔥3⚡1✍1🎉1🎄1
UIKit: подборка практических и теоретических задач (II часть)
В новом блоке разобрал важные вещи, без которых сложно представить нашу с вами работу (затронул
В нашем канале много уделяется и SwiftUI, например в опросе несколько десятков человек попросили разобрать непростые анимации, к которым мы обязательно будем возвращаться. Кстати, если ещё не прошли опрос - самое время.
Получить доступ можно💰 тут и ⭐️ в телеграм.
😃 iOS Dev
В новом блоке разобрал важные вещи, без которых сложно представить нашу с вами работу (затронул
hitTest
, относительно новый automatic trait tracking и не только).В нашем канале много уделяется и SwiftUI, например в опросе несколько десятков человек попросили разобрать непростые анимации, к которым мы обязательно будем возвращаться. Кстати, если ещё не прошли опрос - самое время.
🧠 Что вы получите, подписавшись сегодня:➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры➡️ Память: ARC, side table, флаги, утечки✅ А также доступ к ранним релизам приложения iOS IQ, несколько десятков важных тем, тонну теории и многое другое.
Получить доступ можно
Please open Telegram to view this post
VIEW IN TELEGRAM
13 16👍5✍3👏2🎉2🎅2🎄2⚡1🔥1👌1
Стратегии, позволяющие избежать мерж-конфликтов в проектах Xcode
Каждый, кто работал в более-менее большой команде разработчиков (что уж там, даже двоих человек иногда достаточно), наверняка сталкивался с конфликтами при слиянии изменений.
📖 Tuist выпустили неплохой материал с разбором, почему такие проблемы вообще возникают, и как с этим может быть связан файл project.pbxproj в Xcode.
А ещё они описали несколько вариантов решения: от использования workspace и SwiftPM до buildable folders в Xcode 16.
🔗 Кстати, вот тут можно познакомиться и с другими возможными причинами мерж-конфликтов.
😃 iOS Dev
Каждый, кто работал в более-менее большой команде разработчиков (что уж там, даже двоих человек иногда достаточно), наверняка сталкивался с конфликтами при слиянии изменений.
📖 Tuist выпустили неплохой материал с разбором, почему такие проблемы вообще возникают, и как с этим может быть связан файл project.pbxproj в Xcode.
А ещё они описали несколько вариантов решения: от использования workspace и SwiftPM до buildable folders в Xcode 16.
🔗 Кстати, вот тут можно познакомиться и с другими возможными причинами мерж-конфликтов.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍17 9✍4🔥3💯3👏2🎄1
Как улучшить архитектуру кода с помощью принципов SOLID (с примерами на Swift)
Эти принципы помогают сократить количество хаоса на проекте с течением времени. Да и следование SOLID облегчает в целом сопровождение кода, тестирование и потенциальное масштабирование.
Наш читатель Максим Егоров (уже знакомый вам по примеру работы с Network-фреймворком) в этот раз решил затронуть базу и показал на несложных примерах потенциальные ошибки, которые могут нарушать принципы, сформулированные Робертом Мартином, а ещё привёл варианты их исправления.
📖 Прочитать статью целиком можно здесь.
🧠 Напомню, что в приложении вы можете проверить себя не только в знании этих принципов, но и в других важных темах.
😃 iOS Dev
Эти принципы помогают сократить количество хаоса на проекте с течением времени. Да и следование SOLID облегчает в целом сопровождение кода, тестирование и потенциальное масштабирование.
Наш читатель Максим Егоров (уже знакомый вам по примеру работы с Network-фреймворком) в этот раз решил затронуть базу и показал на несложных примерах потенциальные ошибки, которые могут нарушать принципы, сформулированные Робертом Мартином, а ещё привёл варианты их исправления.
📖 Прочитать статью целиком можно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍23 14🔥4💯4✍3🎉1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Spectrum ring — реализация на Metal в iOS
В рамках экспериментов по изучению возможностей шейдеров попробовал разложить несколько цветов в непрерывный ряд (и дополнил парой красивых эффектов).
Варианты использования спектра вообще довольно значительны (от стандартного colorPicker в iOS до реализации самых разных волн и анимаций в музыкальных плеерах).
✅ Реализация, референсы и код на SwiftUI+Metal уже доступен 💰 тут и ⭐️ в телеграм.
🎆 В канале доступны и другие красивые эффекты.
😃 iOS Dev
В рамках экспериментов по изучению возможностей шейдеров попробовал разложить несколько цветов в непрерывный ряд (и дополнил парой красивых эффектов).
Варианты использования спектра вообще довольно значительны (от стандартного colorPicker в iOS до реализации самых разных волн и анимаций в музыкальных плеерах).
Please open Telegram to view this post
VIEW IN TELEGRAM
7 18👍6💯5☃2🔥2✍1👏1🎉1
Swift init() - особенности, примеры использования и подводные камни
📖 Статья, на первый взгляд полезная новичкам, на самом деле описывает несколько проблем, с которыми могут столкнуться разработчики.
Кирилл, который уже делился своим разбором Grand Central Dispatch, акцентирует внимание на нескольких важных аспектах.
Например, почему
Статья разбита на следующие логические блоки:
Работа со структурами:
- Memberwise initializer.
- Optionals, var vs let.
- Retaining a memberwise initializer.
Работа с классами:
- Designated initializer.
- Convenience initializer.
- Уменьшаем количество override.
- Помощь компилятора.
- required initializer: дженерики, протоколы, Self(), final.
- UIView() и что скрывает документация.
😃 iOS Dev
📖 Статья, на первый взгляд полезная новичкам, на самом деле описывает несколько проблем, с которыми могут столкнуться разработчики.
Кирилл, который уже делился своим разбором Grand Central Dispatch, акцентирует внимание на нескольких важных аспектах.
Например, почему
UIView.init()
всегда вызывается без параметров, а init(frame:)
и init(coder:)
переопределяются. Или, например, когда именно нужен required
-инициализатор. Статья разбита на следующие логические блоки:
Работа со структурами:
- Memberwise initializer.
- Optionals, var vs let.
- Retaining a memberwise initializer.
Работа с классами:
- Designated initializer.
- Convenience initializer.
- Уменьшаем количество override.
- Помощь компилятора.
- required initializer: дженерики, протоколы, Self(), final.
- UIView() и что скрывает документация.
Please open Telegram to view this post
VIEW IN TELEGRAM
8 17👍6👏4✍3💯3🔥1
Разделение или работа в команде
Удивительно, как в нескольких компаниях сразу идеи о том, как важно отделять рабочее от всего остального, вышли буквально на мировой уровень.
📺 Несколько лет назад появился сериал Разделение, о котором я даже написал пару строк (и по случайному совпадению он завершал один из небольших квестов в нашем канале).
К слову, линия мистера Милчека с его перфоманс-ревью и последующей рефлексией возможно найдет ответ и у некоторых разработчиков.
🎮 А ведь кроме этого вышла сначала it takes two, а в этом году не менее чудесная Split Fiction, в которой, к слову, секретное послание оставил и геймдизайнер.
Пожалуй, крайне важная часть — умение работать в команде, ведь далеко не всегда всё зависит от мобильного клиента, или конкретно от разработчика.
Тесное взаимодействие команд дизайна, тестирования, реализации на сервере и формирование продуктовых задач, которые попадают в спринт достигается за счёт синергии всех участников процесса.
Кроме этого, одна из основных составляющих нашей работы состоит как раз в сложности разделения.
Тяжело перестать думать о баге или какой-нибудь важной фиче, которую вот-вот и вы выкатите на прод, особенно перед релизом.
И это может влиять и на менталку, и на какие-то дела вне работы. Поэтому довольно важно научиться разделять рабочие моменты и все, что находится за пределами, какой бы сложной и важной та или иная не казалась на первый взгляд.
🔄 Главное помнить, что умение переключать контекст - важнейший скилл. Не только в работе, но и в жизни.
И это далеко не самый простой навык.
😃 iOS Dev
Удивительно, как в нескольких компаниях сразу идеи о том, как важно отделять рабочее от всего остального, вышли буквально на мировой уровень.
📺 Несколько лет назад появился сериал Разделение, о котором я даже написал пару строк (и по случайному совпадению он завершал один из небольших квестов в нашем канале).
К слову, линия мистера Милчека с его перфоманс-ревью и последующей рефлексией возможно найдет ответ и у некоторых разработчиков.
🎮 А ведь кроме этого вышла сначала it takes two, а в этом году не менее чудесная Split Fiction, в которой, к слову, секретное послание оставил и геймдизайнер.
Пожалуй, крайне важная часть — умение работать в команде, ведь далеко не всегда всё зависит от мобильного клиента, или конкретно от разработчика.
Тесное взаимодействие команд дизайна, тестирования, реализации на сервере и формирование продуктовых задач, которые попадают в спринт достигается за счёт синергии всех участников процесса.
Кроме этого, одна из основных составляющих нашей работы состоит как раз в сложности разделения.
Тяжело перестать думать о баге или какой-нибудь важной фиче, которую вот-вот и вы выкатите на прод, особенно перед релизом.
И это может влиять и на менталку, и на какие-то дела вне работы. Поэтому довольно важно научиться разделять рабочие моменты и все, что находится за пределами, какой бы сложной и важной та или иная не казалась на первый взгляд.
И это далеко не самый простой навык.
Please open Telegram to view this post
VIEW IN TELEGRAM
15 14👍9⚡4🔥3💯2👏1🎉1
Хотя актуальный релиз Swift по дефолту включен в Xcode, иногда может понадобиться другая версия для создания сервисов или, например, каких-либо инструментов командной строки.
Установка надежной версии Swift (с нужными зависимостями) требовала действий вручную, которые, очевидно, могли приводить к ошибкам.
🛠 В этом релизе swiftly стал частью Swift toolchain.
Кроме этого, добавлена и поддержка macOS для того, чтобы сделать возможной установку Swift отдельно от Xcode.
Среди базовых фич:
📖 Официальная новость на сайте Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
11 21👍12🔥5👏4🎉2❤🔥1✍1🎄1
Архитектура SwiftData: паттерны и практики
SwiftData ознаменовала важный шаг вперёд в области хранения данных. Она была призвана заменить Core Data чем-то более интуитивным: тем, что будет проще интегрировать в SwiftUI.
Однако осталось несколько важных вопросов.
Как именно мы должны проектировать приложение на её основе?
Должны ли мы целиком полагаться на
📖 В этой масштабной статье можно узнать ответы на эти и другие вопросы:
🔘 Как структурировать модели данных
🔘 Где разместить бизнес-логику
🔘 Как писать модульные тесты
🔘 Как настроить работу Preview в Xcode
🔘 Как интегрировать CloudKit
🔘 Как работать с изменениями в слоях в будущем.
😃 iOS Dev
SwiftData ознаменовала важный шаг вперёд в области хранения данных. Она была призвана заменить Core Data чем-то более интуитивным: тем, что будет проще интегрировать в SwiftUI.
Однако осталось несколько важных вопросов.
Как именно мы должны проектировать приложение на её основе?
Должны ли мы целиком полагаться на
@Model
и @Query
, или можно абстрагировать их за протоколами для обеспечения гибкости? Как быть с бизнес-логикой? Да и как в целом нужно структурировать код для обеспечения надёжности и тестируемости в будущем.📖 В этой масштабной статье можно узнать ответы на эти и другие вопросы:
Please open Telegram to view this post
VIEW IN TELEGRAM
6 14👍10🔥4💯4✍2☃1🎉1👌1
Вышел Xcode 16.3 с нативной интеграцией вайб-кодинга!
Ночью вышел Xcode 16.3 и Swift 6.1, а вместе с ним и новый режим программирования.
На этой неделе в Европе официально разрешили Apple Intelligence и Тим Кук просто шокировал общественность, написав в X:
«Нам пришлось принять сложное решение. Всё больше разработчиков стало доверять ИИ, всё больше процессов интегрируется и вместе с тем мы вынуждены сохранять гонку не только с Google и OpenAI, но и с самим временем. Поэтому мы решили выпустить из беты режим вайб-кодинга в Xcode. Никакого Leetcode, никаких мыслей, теперь только х-к, х-к и в продакшн (какие-то буквы, к сожалению, пропущены).»
Буквально месяц назад Сергей Брин призвал ходить коллег в офис и работать 60 часов в неделю, но Apple сыграли на опережение как всегда. Разработчики в Купертино сидели по 120 часов с понедельника по субботу, приходя в 4 утра.
Новая инновация уже вызвала целую волну сокращений в Кремниевой долине и даже затронула бигтехи в РФ.
Сообщества с десятками тысяч читателей уже запустили курсы по подписке, как обойти новые процессы собеседований.
Теперь они предлагают работать и скручивать опыт, ведь как известно, для работы с новым ИИ теперь необходимо как можно меньше навыков. Чистое, незамутнённое алгоритмами сознание теперь имеет преимущество перед разработчиками с 10+ опыта.
Тим Кук добавил, что новый режим стал частью долгосрочного плана и подчеркнул, что канал iOSDev всё знал ещё два года назад.
😃 iOS Dev
Ночью вышел Xcode 16.3 и Swift 6.1, а вместе с ним и новый режим программирования.
На этой неделе в Европе официально разрешили Apple Intelligence и Тим Кук просто шокировал общественность, написав в X:
«Нам пришлось принять сложное решение. Всё больше разработчиков стало доверять ИИ, всё больше процессов интегрируется и вместе с тем мы вынуждены сохранять гонку не только с Google и OpenAI, но и с самим временем. Поэтому мы решили выпустить из беты режим вайб-кодинга в Xcode. Никакого Leetcode, никаких мыслей, теперь только х-к, х-к и в продакшн (какие-то буквы, к сожалению, пропущены).»
Буквально месяц назад Сергей Брин призвал ходить коллег в офис и работать 60 часов в неделю, но Apple сыграли на опережение как всегда. Разработчики в Купертино сидели по 120 часов с понедельника по субботу, приходя в 4 утра.
Новая инновация уже вызвала целую волну сокращений в Кремниевой долине и даже затронула бигтехи в РФ.
Сообщества с десятками тысяч читателей уже запустили курсы по подписке, как обойти новые процессы собеседований.
Теперь они предлагают работать и скручивать опыт, ведь как известно, для работы с новым ИИ теперь необходимо как можно меньше навыков. Чистое, незамутнённое алгоритмами сознание теперь имеет преимущество перед разработчиками с 10+ опыта.
Тим Кук добавил, что новый режим стал частью долгосрочного плана и подчеркнул, что канал iOSDev всё знал ещё два года назад.
Please open Telegram to view this post
VIEW IN TELEGRAM
24🤣149😁14🎉5👍3💯3 3⚡2🔥2✍1👏1
Современные практики для работы с URL в Swift
Использование современных API в Foundation для построения (и дальнейшей работы) с URL не только упрощает наш код, но и снижает риск возникновения ошибок и возможных крашей.
📖 В своей статье Джон Санделл разбирает импакт от StaticString, макросов, как прийти к виду
✅ Кстати, про особенности и свойства URLSession можно узнать из этого поста.
😃 iOS Dev
Использование современных API в Foundation для построения (и дальнейшей работы) с URL не только упрощает наш код, но и снижает риск возникновения ошибок и возможных крашей.
📖 В своей статье Джон Санделл разбирает импакт от StaticString, макросов, как прийти к виду
let url = #staticURL("https://yangx.top/iosdev")
, например, а также опции построения сложных запросов с помощью фич из iOS 16.Please open Telegram to view this post
VIEW IN TELEGRAM
4 17👍10❤🔥6🔥4👏1🎉1💯1🎄1😎1
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект свечения текста в комбинации с numericText
Показал пример несложной анимации, при этом довольно приятной по ощущениям (нужен массив с несколькими цветами, несколько теней и contentTransition с
✅ Код этого и других примеров (в том числе с Metal доступен 💰 тут и ⭐️ в телеграм).
😃 iOS Dev
Показал пример несложной анимации, при этом довольно приятной по ощущениям (нужен массив с несколькими цветами, несколько теней и contentTransition с
numericText
).Please open Telegram to view this post
VIEW IN TELEGRAM
13 37👍14🔥12✍2💯2🎅1🆒1😎1
WWDC25
К сожалению, в этом году лотерея была не на моей стороне. С другой стороны - будет больше времени на то, чтобы детальнее рассмотреть все фичи.
🐱 Кстати, если кто планирует ехать, в эти дни в Сан-Франциско будет как минимум CommunityKit-конфа и OneMoreThing (если её решатся провести снова).
А мне пока остаётся смотреть на старые фотки из Apple Visitor Center.
Если кому-то выпало нормально очков удачи и вы выиграли билет на ивент, поделитесь радостью в комментариях)
😃 iOS Dev
К сожалению, в этом году лотерея была не на моей стороне. С другой стороны - будет больше времени на то, чтобы детальнее рассмотреть все фичи.
А мне пока остаётся смотреть на старые фотки из Apple Visitor Center.
Если кому-то выпало нормально очков удачи и вы выиграли билет на ивент, поделитесь радостью в комментариях)
Please open Telegram to view this post
VIEW IN TELEGRAM
9❤🔥21🤗8 7🫡3👍2🔥2🎉1👌1
Как на самом деле работает Swift Concurrency
📖 Виталий Батраков в своём блоге рассказывает о том, что такое асинхронные функции, как создавать и работать с Task и не только.
Например, в статье разбираются Default concurrent/Serial/Main executors и как именно они формируют общую картину.
🔗 Напомню, в канале есть и глоссарий по Swift Concurrency.
Кстати, здесь можно проверить свои силы в вопросах на примерах кода (в приложении часть из них тоже есть).
😃 iOS Dev
📖 Виталий Батраков в своём блоге рассказывает о том, что такое асинхронные функции, как создавать и работать с Task и не только.
Например, в статье разбираются Default concurrent/Serial/Main executors и как именно они формируют общую картину.
Кстати, здесь можно проверить свои силы в вопросах на примерах кода (в приложении часть из них тоже есть).
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍25🔥9 9✍2👏2🎉1💯1
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с модификатором task в SwiftUI: примеры, особенности, приоритеты
➡️ Модификатор task можно использовать в качестве инструмента для выполнения асинхронного кода.
Как рекомендует автор следующего материала, стоит задуматься о применении этого модификатора в частности для случаев, когда есть комбинация отдельных блоков
📖 В этой статье рассмотрены различные опции использования task в реальном проекте.
🛠 А вот тут можно посмотреть на этот проект.
😃 iOS Dev
Как рекомендует автор следующего материала, стоит задуматься о применении этого модификатора в частности для случаев, когда есть комбинация отдельных блоков
onAppear
и Task
.📖 В этой статье рассмотрены различные опции использования task в реальном проекте.
🛠 А вот тут можно посмотреть на этот проект.
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍17 10⚡3✍3💯2🔥1👏1🎉1😎1
iOS IQ - апдейт по прогрессу базы и бонус для новых подписчиков
Безусловно, практика в нашей работе должна быть на первом месте (и об этом я пишу в канале буквально с самого первого поста).
Я постоянно стараюсь облегчить жизнь не только благодаря фичам с оптимизацией на работе, но и делаю полезные утилиты: Lines (если у вас ещё есть код на Objective-C), ReviewBuddy, iOS IQ (кстати, уже в разработке новые интересные темы) и целый ряд других приложений.
Многое из моих реальных задач связано с шифрованием, а также работой с большим объёмом данных.
Поэтому в базе есть не только непростые вопросы, но и все решённые задачи с CodeRun (несколько десятков от прошлых к сложным), множество примеров непростых анимаций (включая Metal), а также разбор реальных ситуаций, которые могут возникать в нашей работе.
При этом iOS IQ постоянно наполняется вопросами на самые разные темы.
✅ Присоединяйтесь, всю неделю будет действовать вводное предложение: 💰 в бусти и ⭐️ в телеграм.
Ах да, ещё недавно был редизайн (так что можно заглянуть хотя бы ради нового оформления).
😃 iOS Dev
Безусловно, практика в нашей работе должна быть на первом месте (и об этом я пишу в канале буквально с самого первого поста).
Я постоянно стараюсь облегчить жизнь не только благодаря фичам с оптимизацией на работе, но и делаю полезные утилиты: Lines (если у вас ещё есть код на Objective-C), ReviewBuddy, iOS IQ (кстати, уже в разработке новые интересные темы) и целый ряд других приложений.
Многое из моих реальных задач связано с шифрованием, а также работой с большим объёмом данных.
Поэтому в базе есть не только непростые вопросы, но и все решённые задачи с CodeRun (несколько десятков от прошлых к сложным), множество примеров непростых анимаций (включая Metal), а также разбор реальных ситуаций, которые могут возникать в нашей работе.
При этом iOS IQ постоянно наполняется вопросами на самые разные темы.
➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы (две части)➡️ Swift Concurrency➡️ Память: ARC, side table, флаги, утечки➡️ UIKit (теория + практика, две части)➡️ Компилятор Swift➡️ Основы: URLSession, UICollectionView и т.д.)
Ах да, ещё недавно был редизайн (так что можно заглянуть хотя бы ради нового оформления).
Please open Telegram to view this post
VIEW IN TELEGRAM
9 14🤩7🔥5👍4🎉2🏆2❤🔥1💯1🎅1
Коллекционер и аукцион
Попробуем новый формат - с вас самое короткое решение задачи, с меня подарок в телеграм (сегодня это будет white hat 🎩).
Сама задача:
Решения присылайте в комментарии (внимание - вы можете решать олдскульно или пользоваться любыми средствами от Grok до Cursor).
Итоги в 16:00 по мск.
😃 iOS Dev
Попробуем новый формат - с вас самое короткое решение задачи, с меня подарок в телеграм (сегодня это будет white hat 🎩).
Сама задача:
Вам дан массив цен картиныprices
, гдеprices[i]
это цена картины в i-день.
Вы хотите добиться максимальной прибыли для коллекционера, выбрав оптимальный день для покупки и другой день для последующей продажи.
Верните максимальную прибыль, которую вы можете получить от перепродажи. Если заработать не получится, нужно вернуть 0.
Пример 1
Input: prices = [12,1,4,3,6,2]
Output: 5
Ответ здесь 5, так как мы можем купить картину на 2 день и продать её на 5 день, получив прибыль 5 = 6 - 1
Пример 2
Input: prices = [12,11,10,9,8,7]
Output: 0
Здесь ответ 0, так как мы не можем получить прибыль, купив картину в любой из дней.
Присылайте в комментарии ваши варианты решения задачи на Swift, но помните, что решение задачи должно быть максимально коротким (не обяательно самым быстрым).
[UPD 12:42] - тест-кейсы должны быть пройдены все.
Подсчёт символов решения будет внутри этой функции, включая пробелы (учтите при отправке ваших решений):
func maxProfit(_ p: [Int]) -> Int {
}
Решения присылайте в комментарии (внимание - вы можете решать олдскульно или пользоваться любыми средствами от Grok до Cursor).
Итоги в 16:00 по мск.
Please open Telegram to view this post
VIEW IN TELEGRAM
20⚡12👏5👍4💯3👌2🏆2 2✍1🔥1😎1
iOS Dev
Коллекционер и аукцион Попробуем новый формат - с вас самое короткое решение задачи, с меня подарок в телеграм (сегодня это будет white hat 🎩). Сама задача: Вам дан массив цен картины prices, где prices[i] это цена картины в i-день. Вы хотите добиться…
Ну что, время итогов алгоритмического конкурса
Я не ожидал столько вариантов решения, но очень рад, что вы решили поучаствовать и проверить себя. Эта задача — интерпретация одной из популярных литкодовских (вот тут можно почитать условие).
И хотя было несколько достойных кандидатов, я решил выбрать двоих победителей среди всех присланных.
🏆 Решение Дмитрия - 55 символов.
🏆 Решение Вовы - 54 символа.
Победители уже получили 🎩 white (1) hat (2), надеюсь, отсылка к цвету очевидна.
И, хотя вот эта версия от Игоря не прошла все кейсы, но бонус всё-таки улетел (до 12:42 была лазейка в условиях задачи).
🚀 Поддержите бустом канал, если вы хотели бы видеть больше таких задач.
В следующий раз можем выбрать что-то посложнее.
😃 iOS Dev
Я не ожидал столько вариантов решения, но очень рад, что вы решили поучаствовать и проверить себя. Эта задача — интерпретация одной из популярных литкодовских (вот тут можно почитать условие).
И хотя было несколько достойных кандидатов, я решил выбрать двоих победителей среди всех присланных.
🏆 Решение Дмитрия - 55 символов.
🏆 Решение Вовы - 54 символа.
Победители уже получили 🎩 white (1) hat (2), надеюсь, отсылка к цвету очевидна.
И, хотя вот эта версия от Игоря не прошла все кейсы, но бонус всё-таки улетел (до 12:42 была лазейка в условиях задачи).
В следующий раз можем выбрать что-то посложнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
26🏆11 8🔥5👏3🎉3👍2⚡1🤩1💯1