EasySwift iOS🍏
3.02K subscribers
268 photos
8 videos
393 links
Все самое интересное в мире iOS разработки 🧑🏻‍💻

Предложить статью или новость: @EasySwiftBot

По всем вопросам обращаться к @itereznikov
Download Telegram
Асинхронное ожидание в Swift

Асинхронное ожидание является частью новых изменений структурированного параллелизма, которые появились в Swift 5.5 во время WWDC 2021. Параллелизм в Swift означает одновременное выполнение нескольких фрагментов кода. Это очень упрощенное описание, но оно должно дать вам представление о том, насколько важен параллелизм в Swift для производительности ваших приложений. С помощью новых асинхронных методов и операторов await мы можем определять методы, выполняющие работу асинхронно.

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

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

Почитать статью.
Посмотреть доклад
👍9🔥73
Начинаем работу над модуляризацией iOS-приложения

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

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

Вот пример того, как реализуется начальный подход с UIComponents и Core фреймворком и как все работает вместе:

Статья
Код приложения
🔥10👍32🥰1👏1
С наступающим Новым Годом!

В этом году мы концентрировались на Swift и дефолтных фреймворках, а в следующем постараемся удивить новыми форматами и спецпроектами. А пока хотим пожелать:

1️⃣ Развития
Продолжайте расти, узнавайте новое и применяйте на практике, совершенствуйте код, подходы и не бойтесь эксперементировать

2️⃣ Получать удовольствие
Вспомните чувства, когда вы только начинали обучаться. Когда новая строчка кода, фреймворк и UI компонент приводили к эйфории. Желаем, чтобы эти чувства не угасали, а работа приносила только положительные эмоции

3️⃣ Покорения новых вершин
Поставьте амбициозные цели, будь то устройство на первую работу или переход на новый грейд, мы уверены, что всё получится
31👍4
Если брать больше трех недель отпуска в год, есть шансы прожить дольше - к такому выводу пришли ученые из Хельсинского университета в течение 40 летнего эксперимента.

А значит, у вас будет больше времени для изучения Swift⚰️

О том, почему важно отдыхать и как это делать правильно читайте в статье
😁10🤔3👍2
Неблокирование потоков - одна из главных особенностей async / await. В статье приводятся наглядные примеры, как можно ускорить работу приложения переделав с GCD на async / await.

Бонусом рассказывается чем ограничено количество потоков async / await, зачем это сделано и когда все же лучше использовать GCD.

Жаль, что async / await недоступен в objective-c, ведь Swift deprecated 😬
👍13🔥5👏1
В SwiftUI можно легко реализовать поддержку Drag and drop.

Для этого нужно:
• добавить модификатор dropDestination() и обработать перетаскиваемые данные
• добавить модификатор draggable() для данных, которые вы хотите перетаскивать

Подробнее в статье
👍93
This media is not supported in your browser
VIEW IN TELEGRAM
В статье на примере функции receive(on:options:) фреймворка Combine показывается отличие между DispatchQueue.main и RunLoop.main.

Задача стандартная - загрузка картинки в момент, когда пользователь взаимодействует с UI, например, скролит UIScrollView.
На GIF'ке слева используется RunLoop.main, а справа DispatchQueue.main
👍27🔥1
Как долго вы в коммерческой разработке?
Это поможет публиковать более релевантный контент
Anonymous Poll
48%
Ещё учусь
15%
0-1 год
17%
1-3 года
5%
3-5 лет
6%
5+
3%
Не разработчик (QA, PM и тд)
6%
Посмотреть результаты
👍2
Apple выпустили курс по SwiftUI, UIKit, работе с сетью, кешированию и тестам.

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

Редакция канала настоятельно рекомендует к ознакомлению
🔥40👍83❤‍🔥1
Держим в курсе:
👉Теперь можно предложить статью, новость или любимый мем об IT в чат боте

👉Теперь можно оставлять комменты под постами и общаться в чате тут
👍8
EasySwift iOS🍏 pinned «Держим в курсе: 👉Теперь можно предложить статью, новость или любимый мем об IT в чат боте 👉Теперь можно оставлять комменты под постами и общаться в чате тут»
В чате задали вопрос - как пройти по всем значениям кортежа и выбрать одно, соответcтвующее условию.

Простого решения для этой задачи нет, но можно использовать рефлексию, которая в Swift представлена структурой Mirror.

О том что такое рефлексия и как её использовать читайте в статье
👍22🔥1🤡1
Пример реализации крутого поиска в приложении на SwiftUI с помощью модификатора .searchable

Подробнее о том, как затянуть поиск в своё приложение в гайдах Apple
👍9😁1
Что мы увидим в консоли в первом принте и что во втором?

Если не знаете как безопасно работать с ArraySlice коллекций, советуем статью.

А для тех, кто знает, но решил себя проверить или пытается угадать ответ:
1. [2, 7, 15, 8, 1]
2. Fatal error: Array index is out of range
👍24
В чем отличие между первым и вторым примером? Выполнится ли метод doSomething?

Responder Chain - тема, которую любят спрашивать на собеседованиях. О том, что такое Responder Chain и как он устроен «под капотом» в статье
👍20❤‍🔥1
Еще один из популярных вопросов на интервью - как работает инструкция defer? В каком порядке выведутся числа в консоли в задаче выше?

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

Правильный ответ: 3 2 5 4 1. А почему так и как работает defer, можно узнать тут
👍221
Для решения типовых задач программирования существуют паттерны проектирования - GOF, GRASP, you name it.

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

В статье рассматривается реализация с примерами этого паттерна на Swift
❤‍🔥8🤔21