Что такое Property Wrappers в SwiftUI? 🧐
• Управление состоянием
Property wrappers позволяют легко отслеживать изменения в данных и автоматически обновлять пользовательский интерфейс при этих изменениях.
• Связывание данных
Позволяет связывать данные между моделью и представлением, обеспечивая двустороннюю связь, где изменения в модели автоматически обновляют представление, и наоборот.
• Инкапсуляция логики и упрощение синтаксиса
Позволяют инкапсулировать сложные процессы и использовать их через простую аннотацию, упрощая синтаксис и делая код более читаемым. Это также улучшает повторное использование кода, так как логику можно легко перенести в другие части приложения.
Подробнее по ссылке🐱
• Управление состоянием
Property wrappers позволяют легко отслеживать изменения в данных и автоматически обновлять пользовательский интерфейс при этих изменениях.
• Связывание данных
Позволяет связывать данные между моделью и представлением, обеспечивая двустороннюю связь, где изменения в модели автоматически обновляют представление, и наоборот.
• Инкапсуляция логики и упрощение синтаксиса
Позволяют инкапсулировать сложные процессы и использовать их через простую аннотацию, упрощая синтаксис и делая код более читаемым. Это также улучшает повторное использование кода, так как логику можно легко перенести в другие части приложения.
Подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
4 9 5 4
Task(Detached) 🎃
Мы уже познакомились с определением задач, примерно понимаем чем и как они отличаются, теперь начнем погружаться уже в технические детали и будем на примерах изучать Task.
• Создание родительской(Detached) таски
• Создание дочерней задачи
• Указание исполнителей
Подробнее по ссылке🎁
Мы уже познакомились с определением задач, примерно понимаем чем и как они отличаются, теперь начнем погружаться уже в технические детали и будем на примерах изучать Task.
• Создание родительской(Detached) таски
• Создание дочерней задачи
• Указание исполнителей
Подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
4 14 6 5 1
Анимации в SwiftUI ❤️
В SwiftUI существует несколько основных методов и модификаторов для создания анимаций:
• .animation(_:)
• .animation(, value:)
• withAnimation
• AnyTransition
• AnimatableModifier
• Работа с векторными данными (VectorArithmetic, AnimatableData)
• .matchedGeometryEffect()
• .transformEffect()
Мы рассмотрим каждый из этих методов в логическом порядке, начиная с простых и переходя к более сложным и мощным подходам тут🌚
В SwiftUI существует несколько основных методов и модификаторов для создания анимаций:
• .animation(_:)
• .animation(, value:)
• withAnimation
• AnyTransition
• AnimatableModifier
• Работа с векторными данными (VectorArithmetic, AnimatableData)
• .matchedGeometryEffect()
• .transformEffect()
Мы рассмотрим каждый из этих методов в логическом порядке, начиная с простых и переходя к более сложным и мощным подходам тут
Please open Telegram to view this post
VIEW IN TELEGRAM
4 14 5 4
Всем привет 😮
Мы открыли для вас чат и комментарии. Они будут доступны на всех будущих публикациях.
Присоединяйтесь и участвуйте в обсуждениях😃
Мы открыли для вас чат и комментарии. Они будут доступны на всех будущих публикациях.
Присоединяйтесь и участвуйте в обсуждениях
Please open Telegram to view this post
VIEW IN TELEGRAM
1 8 5 4
Начинаем погружаться в коллекции Swift 🥹
Коллекции занимают важное место, предоставляя гибкие и мощные инструменты для работы с множеством данных. Они позволяют организовать и управлять данными различными способами, от упорядоченных массивов до ассоциативных контейнеров. Сегодня мы сосредоточимся на одной из таких коллекций — словарях.
Что такое словари в Swift?
• Это коллекции, которые ассоциируют уникальные ключи с определенными значениями. Каждый ключ связан с одним значением, что позволяет быстро и эффективно искать значения по ключам. Словари в Swift являются типами значений, что означает, что когда вы копируете или присваиваете словарь, создается новая копия этого словаря, а не ссылка на оригинал.
Подробнее по ссылке👩🎓
Коллекции занимают важное место, предоставляя гибкие и мощные инструменты для работы с множеством данных. Они позволяют организовать и управлять данными различными способами, от упорядоченных массивов до ассоциативных контейнеров. Сегодня мы сосредоточимся на одной из таких коллекций — словарях.
Что такое словари в Swift?
• Это коллекции, которые ассоциируют уникальные ключи с определенными значениями. Каждый ключ связан с одним значением, что позволяет быстро и эффективно искать значения по ключам. Словари в Swift являются типами значений, что означает, что когда вы копируете или присваиваете словарь, создается новая копия этого словаря, а не ссылка на оригинал.
Подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
3 8 6 4
Асинхронные функции и await 😵💫
Задачи создавать научились, поняли основную разницу между Task и Task.detached.
- Но что будет лежать внутри этих задач?
- Как этим управлять и как с этим работать?
- Что такое Task.yield?
• Одно из назначений задач - это организация работы асинхронных функций.
Функция помеченная ключевым словом async не вернёт результат сразу же. Она его вернёт через некоторое время. Именно поэтому данную функцию нельзя просто вызвать из синхронного кода.
Подробнее по ссылке🤖
Задачи создавать научились, поняли основную разницу между Task и Task.detached.
- Но что будет лежать внутри этих задач?
- Как этим управлять и как с этим работать?
- Что такое Task.yield?
• Одно из назначений задач - это организация работы асинхронных функций.
Функция помеченная ключевым словом async не вернёт результат сразу же. Она его вернёт через некоторое время. Именно поэтому данную функцию нельзя просто вызвать из синхронного кода.
Подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
3 10 7 6
Тур по жестам в SwiftUI 😈
• Жесты — механизм, позволяющий разработчикам реагировать на пользовательские взаимодействия с интерфейсом. Жесты включают такие действия, как нажатия, долгие нажатия, перетаскивания, масштабирование, вращение и многое другое. SwiftUI предоставляет ряд встроенных жестов, которые можно использовать для создания интуитивно понятных интерфейсов, а также возможность создания собственных жестов.
Как работают жесты в SwiftUI?
• SwiftUI обрабатывает события касания и другие сенсорные данные, чтобы обнаруживать и обрабатывать жесты. Эти данные включают позицию пальцев, длительность касания, угол вращения и другие параметры, которые затем преобразуются в действия, определенные разработчиком.
Теория по ссылке, а скоро вас ждет раздел с практикой🔜
• Жесты — механизм, позволяющий разработчикам реагировать на пользовательские взаимодействия с интерфейсом. Жесты включают такие действия, как нажатия, долгие нажатия, перетаскивания, масштабирование, вращение и многое другое. SwiftUI предоставляет ряд встроенных жестов, которые можно использовать для создания интуитивно понятных интерфейсов, а также возможность создания собственных жестов.
Как работают жесты в SwiftUI?
• SwiftUI обрабатывает события касания и другие сенсорные данные, чтобы обнаруживать и обрабатывать жесты. Эти данные включают позицию пальцев, длительность касания, угол вращения и другие параметры, которые затем преобразуются в действия, определенные разработчиком.
Теория по ссылке, а скоро вас ждет раздел с практикой
Please open Telegram to view this post
VIEW IN TELEGRAM
3 9 5 4
Отмена задач 😶
Мы продолжаем погружаться в работу с задачами. Следующий шаг - это отмена и правильная обработка состояния отмены. Ответственность за отмену задач лежит на разработчике.
• Способы отмены задач
• Проверка отменена ли задача
• Когда необходимо делать проверку?
Обо всем подробнее по ссылке✈️
Мы продолжаем погружаться в работу с задачами. Следующий шаг - это отмена и правильная обработка состояния отмены. Ответственность за отмену задач лежит на разработчике.
• Способы отмены задач
• Проверка отменена ли задача
• Когда необходимо делать проверку?
Обо всем подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
3 8 5 3
Task Priority 🫡
Приоритеты имеют важную роль в построении задач. Эта роль намного важнее, чем выставление qos в GCD.
• Priority Inversion
• Виды приоритетов
• Смешивание приоритетов
Более подробнее по ссылке🤟
Приоритеты имеют важную роль в построении задач. Эта роль намного важнее, чем выставление qos в GCD.
• Priority Inversion
• Виды приоритетов
• Смешивание приоритетов
Более подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет, давно не виделись 😫
В связи с блокировкой Notion мы решили приостановить работу и найти оптимальный формат для нашей базы знаний
Мы выбрали Github Pages в связке с Obsidian
Настроенная автоматизация позволяет автоматически пересобирать сайт при пуше в ветку с базой знаний. Кроме того, это решение предлагает ряд привычных преимуществ:
• Удобный поиск по всем материалам
• Смена тем (темная/светлая)
• Удобные оглавления
• Защита от блокировок
Делимся результатом тут и предоставляем ссылку на репозиторий с исходником проекта для тех, кто предпочитает работать с базой знаний в Obsidian тут🥹
В связи с блокировкой Notion мы решили приостановить работу и найти оптимальный формат для нашей базы знаний
Мы выбрали Github Pages в связке с Obsidian
Настроенная автоматизация позволяет автоматически пересобирать сайт при пуше в ветку с базой знаний. Кроме того, это решение предлагает ряд привычных преимуществ:
• Удобный поиск по всем материалам
• Смена тем (темная/светлая)
• Удобные оглавления
• Защита от блокировок
Делимся результатом тут и предоставляем ссылку на репозиторий с исходником проекта для тех, кто предпочитает работать с базой знаний в Obsidian тут
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
ARC: С чего все началось? 🥸
До введения ARC, управление памятью в Objective-C было одной из сложнейших задач для разработчиков. Подсчёт ссылок требовал высокой дисциплины: ошибка могла привести либо к утечкам памяти (memory leaks), либо к преждевременному освобождению объектов и последующим сбоям (dangling pointers). MRC был тесно связан с фундаментальными принципами работы runtime системы Objective-C, что обеспечивало низкоуровневый контроль над памятью, но также вносило значительные риски и увеличивало сложность разработки.
Подробнее по ссылке😎
До введения ARC, управление памятью в Objective-C было одной из сложнейших задач для разработчиков. Подсчёт ссылок требовал высокой дисциплины: ошибка могла привести либо к утечкам памяти (memory leaks), либо к преждевременному освобождению объектов и последующим сбоям (dangling pointers). MRC был тесно связан с фундаментальными принципами работы runtime системы Objective-C, что обеспечивало низкоуровневый контроль над памятью, но также вносило значительные риски и увеличивало сложность разработки.
Подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Потокобезопасность. Введение в Actors 😎
Одна из проблем работы с многопоточностью - это потокобезопасность. Как только мы начинаем работать с несколькими потоками, то у нас сразу же может возникать ситуация, когда два потока обратились к одной переменной, несколько потоков пытаются прочитать данные, а какой-то поток записывает.
Потокобезопасность — это свойство программы, которое гарантирует корректное и предсказуемое поведение при одновременном доступе из нескольких потоков. Это означает, что данные остаются в актуальном состоянии и не повреждаются, даже когда несколько потоков пытаются их прочитать или изменить одновременно.
Подробнее по ссылке😈
Одна из проблем работы с многопоточностью - это потокобезопасность. Как только мы начинаем работать с несколькими потоками, то у нас сразу же может возникать ситуация, когда два потока обратились к одной переменной, несколько потоков пытаются прочитать данные, а какой-то поток записывает.
Потокобезопасность — это свойство программы, которое гарантирует корректное и предсказуемое поведение при одновременном доступе из нескольких потоков. Это означает, что данные остаются в актуальном состоянии и не повреждаются, даже когда несколько потоков пытаются их прочитать или изменить одновременно.
Подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет 🤤
Теперь у вас есть возможность поддержать нас через донаты. На текущий момент все материалы и статьи остаются бесплатными, и мы продолжаем развивать нашу базу знаний, делая её доступной для всех. Ваша поддержка поможет нам сохранять этот формат и создавать ещё больше полезного контента.
Задонатить можно тут. Спасибо, что вы с нами❤️
Теперь у вас есть возможность поддержать нас через донаты. На текущий момент все материалы и статьи остаются бесплатными, и мы продолжаем развивать нашу базу знаний, делая её доступной для всех. Ваша поддержка поможет нам сохранять этот формат и создавать ещё больше полезного контента.
Задонатить можно тут. Спасибо, что вы с нами
Please open Telegram to view this post
VIEW IN TELEGRAM
Actor Reentrancy 🫨
На первый взгляд кажется, что работа с Actor очень простая. Но на самом деле есть достаточно неприятные проблемы о которых необходимо знать. Одна из них - высокоуровневые гонки.
• Теория и объяснение
• Как с этим бороться?
Обо всем подробнее по ссылке👀
iOS Deep Tech | Поддержать нас
На первый взгляд кажется, что работа с Actor очень простая. Но на самом деле есть достаточно неприятные проблемы о которых необходимо знать. Одна из них - высокоуровневые гонки.
• Теория и объяснение
• Как с этим бороться?
Обо всем подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Подробнее про ARC 😳
Automatic Reference Counting (ARC) — это механизм управления памятью, встроенный в Swift и Objective-C, который автоматически управляет жизненным циклом объектов. Его задача — освободить разработчиков от необходимости вручную выделять и освобождать память, как это делается в MRC.
ARC автоматически отслеживает количество активных ссылок на объект, и когда объект больше не используется, он освобождается из памяти. В основе этого механизма лежат три типа ссылок: strong, weak и unowned, каждая из которых играет свою роль в управлении памятью.
Подробнее по ссылке😵💫
iOS Deep Tech | Поддержать нас
Automatic Reference Counting (ARC) — это механизм управления памятью, встроенный в Swift и Objective-C, который автоматически управляет жизненным циклом объектов. Его задача — освободить разработчиков от необходимости вручную выделять и освобождать память, как это делается в MRC.
ARC автоматически отслеживает количество активных ссылок на объект, и когда объект больше не используется, он освобождается из памяти. В основе этого механизма лежат три типа ссылок: strong, weak и unowned, каждая из которых играет свою роль в управлении памятью.
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Actor Hopping 🐱
Actor hopping — это концепция в модели экторов в Swift, которая описывает процесс переключения между разными акторами в асинхронном коде. Когда вы вызываете метод на одном акторе из контекста другого актора, происходит "прыжок" от одного актора к другому. Это требует изменения контекста выполнения, чтобы обеспечить потокобезопасный доступ к состоянию каждого актора.
Подробнее по ссылке👀
iOS Deep Tech | Поддержать нас
Actor hopping — это концепция в модели экторов в Swift, которая описывает процесс переключения между разными акторами в асинхронном коде. Когда вы вызываете метод на одном акторе из контекста другого актора, происходит "прыжок" от одного актора к другому. Это требует изменения контекста выполнения, чтобы обеспечить потокобезопасный доступ к состоянию каждого актора.
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет 👋
Ветка по Junior Structured Concurrency уже подходит к завершению, осталось лишь несколько тем для полного охвата. В связи с этим мы готовим большой практический раздел для закрепления материала и нуждаемся в вашей помощи.
Напишите задачи, которые вы хотели бы увидеть в курсе. Возможно, у вас возникает вопрос: “Я знаю, как это сделать на GCD, но не знаю, как на Concurrency”. Мы будем рады рассмотреть такие запросы.
Вопросы можно оставить в комментариях или отправить в личные сообщения (контакты доступны на сайте)
Мы постараемся тщательно разобрать каждую задачу, чтобы данная ветка стала для вас максимально полезной🤙
Ветка по Junior Structured Concurrency уже подходит к завершению, осталось лишь несколько тем для полного охвата. В связи с этим мы готовим большой практический раздел для закрепления материала и нуждаемся в вашей помощи.
Напишите задачи, которые вы хотели бы увидеть в курсе. Возможно, у вас возникает вопрос: “Я знаю, как это сделать на GCD, но не знаю, как на Concurrency”. Мы будем рады рассмотреть такие запросы.
Вопросы можно оставить в комментариях или отправить в личные сообщения (контакты доступны на сайте)
Мы постараемся тщательно разобрать каждую задачу, чтобы данная ветка стала для вас максимально полезной
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, ребята из @ios_deepTech! ✌️
На связи международное сообщество мобильных разработчиков - Coffee&Code.
Оффлайн встречи мобильных разработчиков в формате дружеской беседы на этих выходных.
Мероприятия совершенно бесплатны,
ждём всех желающих, обсудить разработку, задать вопросы, поделиться опытом и знаниями.
🌆Города в которых пройдут встречи:
🤖 Android:
📍СПИСОК ГОРОДОВ
📱 Mobile:
📍СПИСОК ГОРОДОВ
🍏 iOS:
📍СПИСОК ГОРОДОВ
На связи международное сообщество мобильных разработчиков - Coffee&Code.
Оффлайн встречи мобильных разработчиков в формате дружеской беседы на этих выходных.
Мероприятия совершенно бесплатны,
ждём всех желающих, обсудить разработку, задать вопросы, поделиться опытом и знаниями.
🌆Города в которых пройдут встречи:
🤖 Android:
📍СПИСОК ГОРОДОВ
📱 Mobile:
📍СПИСОК ГОРОДОВ
🍏 iOS:
📍СПИСОК ГОРОДОВ
Please open Telegram to view this post
VIEW IN TELEGRAM
Поговорим о массивах 😎
Массивы являются одним из наиболее часто используемых типов данных в Swift. Они предоставляют упорядоченную коллекцию элементов одного типа и обладают богатым набором методов и функций для работы с ними.
В этой статье мы подробно рассмотрим массивы в Swift, их основные методы, алгоритмическую сложность операций.
Подробнее по ссылке🤟
iOS Deep Tech | Поддержать нас
Массивы являются одним из наиболее часто используемых типов данных в Swift. Они предоставляют упорядоченную коллекцию элементов одного типа и обладают богатым набором методов и функций для работы с ними.
В этой статье мы подробно рассмотрим массивы в Swift, их основные методы, алгоритмическую сложность операций.
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Sendable 😄
Работая с
В такой работе стоит подумать о данных, потому что резко увеличивается вероятность возникновения гонки.
• Sendable
• Unchecked Sendable
Подробнее по ссылке🫣
iOS Deep Tech | Поддержать нас
Работая с
async/await мы постоянно переключаемся между состояниями, в этот момент функции приостанавливаются и продолжают своё исполнение. В такой работе стоит подумать о данных, потому что резко увеличивается вероятность возникновения гонки.
• Sendable
• Unchecked Sendable
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизации и устройство массивов 😳
Массивы в Swift разработаны с учетом высокой производительности и эффективности использования памяти.
Под капотом они используют ряд оптимизаций и особенностей реализации, которые позволяют им быть быстрыми и удобными в использовании.
Подробнее тут😎
iOS Deep Tech | Поддержать нас
Массивы в Swift разработаны с учетом высокой производительности и эффективности использования памяти.
Под капотом они используют ряд оптимизаций и особенностей реализации, которые позволяют им быть быстрыми и удобными в использовании.
Подробнее тут
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM