Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие дамы канала, поздравляем вас с 8 марта! Желаю большого счастья, любви и исполнение всех желаний❤️
Так же отдельно хочу поздравить нашу ведущую Екатерину @Neifmetus с женским днём! Катя, всех благ 💥☀️
Так же отдельно хочу поздравить нашу ведущую Екатерину @Neifmetus с женским днём! Катя, всех благ 💥☀️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Обработка URL-адресов Deeplink в SwiftUI
Диплинки ссылки позволяют открывать приложение и переходить в определенное место сразу после запуска. Примером может быть ссылка на рецепт или фильм на основе выбранной ссылки. Вы можете определить целевую страницу на основе метаданных, предоставляемых URL-адресом.
Вы можете использовать модификатор view в SwiftUI или метод AppDelegate для обработки входящих URL-адресов и соответствующей навигации. При разумной настройке вы можете открывать URL-адреса внутри приложения и перемещаться к местам назначения в любом месте приложения.
Настройка, реализация и пример кода в статье.
Диплинки ссылки позволяют открывать приложение и переходить в определенное место сразу после запуска. Примером может быть ссылка на рецепт или фильм на основе выбранной ссылки. Вы можете определить целевую страницу на основе метаданных, предоставляемых URL-адресом.
Вы можете использовать модификатор view в SwiftUI или метод AppDelegate для обработки входящих URL-адресов и соответствующей навигации. При разумной настройке вы можете открывать URL-адреса внутри приложения и перемещаться к местам назначения в любом месте приложения.
Настройка, реализация и пример кода в статье.
Лучшие практики управления состояниями в SwiftUI
Эффективное управление состояниями — ключ к созданию стабильных и отзывчивых приложений в SwiftUI. Ниже приведены некоторые лучшие практики управления состоянием в ваших приложениях SwiftUI:
1. Используйте State и Binding для простых локальных состояний.
2. Для сложных состояний используйте ObservedObject и Published.
3. Используйте EnvironmentObject для совместного использования состояния в несвязанных представлениях.
4. Избегайте больших State переменных.
5. Отложите сложные вычисления и побочные эффекты
Эффективное управление состояниями — ключ к созданию стабильных и отзывчивых приложений в SwiftUI. Ниже приведены некоторые лучшие практики управления состоянием в ваших приложениях SwiftUI:
1. Используйте State и Binding для простых локальных состояний.
2. Для сложных состояний используйте ObservedObject и Published.
3. Используйте EnvironmentObject для совместного использования состояния в несвязанных представлениях.
4. Избегайте больших State переменных.
5. Отложите сложные вычисления и побочные эффекты
Разработка, управляемая тестами (TDD), для исправления ошибок
Test-Driven Development (TDD) — это техника, которая требует, чтобы вы сначала написали тест, прежде чем приступать к реализации решения. Хотя разработчики используют эту методику и в целом во время разработки, есть способ применять ее только для исправления ошибок.
Обнаружение ошибки и так может разочаровать, но обнаружение ошибки, которая повторно возникла, будет еще хуже. Предотвратить повторное появление ошибки после ее устранения — важнейший навык разработчиков.
Разработка, управляемая тестами — это отличная техника, позволяющая увеличить покрытие кода тестами и одновременно повысить качество кода
В статье примеры кода, плюсы и минусы данного подхода.
Test-Driven Development (TDD) — это техника, которая требует, чтобы вы сначала написали тест, прежде чем приступать к реализации решения. Хотя разработчики используют эту методику и в целом во время разработки, есть способ применять ее только для исправления ошибок.
Обнаружение ошибки и так может разочаровать, но обнаружение ошибки, которая повторно возникла, будет еще хуже. Предотвратить повторное появление ошибки после ее устранения — важнейший навык разработчиков.
Разработка, управляемая тестами — это отличная техника, позволяющая увеличить покрытие кода тестами и одновременно повысить качество кода
В статье примеры кода, плюсы и минусы данного подхода.
Что такое состояние гонки (race condition)
Состояние гонки (race condition) — это ситуация, которая возникает в многозадачных или многопоточных программных системах, когда результаты выполнения программы зависят от того, в какой последовательности выполняются инструкции или операции в различных потоках или процессах. Это может привести к непредсказуемому поведению программы или к ошибкам в её выполнении.
Состояние гонки возникает, когда несколько потоков или процессов одновременно пытаются получить доступ к одним и тем же ресурсам (например, переменным памяти, файлам или устройствам ввода-вывода) без синхронизации. При этом результаты операций могут зависеть от порядка их выполнения, что делает поведение программы неопределённым.
Примером состояния гонки может быть ситуация, когда два потока пытаются изменить одну и ту же переменную. Если эти изменения не синхронизированы правильно, результаты могут быть непредсказуемыми, в зависимости от того, какой поток завершит операцию первым.
Для предотвращения состояний гонки часто используются механизмы синхронизации, такие как мьютексы, семафоры, блокировки и атомарные операции, которые гарантируют правильное взаимодействие между потоками или процессами при доступе к общим ресурсам.
#digest
Состояние гонки (race condition) — это ситуация, которая возникает в многозадачных или многопоточных программных системах, когда результаты выполнения программы зависят от того, в какой последовательности выполняются инструкции или операции в различных потоках или процессах. Это может привести к непредсказуемому поведению программы или к ошибкам в её выполнении.
Состояние гонки возникает, когда несколько потоков или процессов одновременно пытаются получить доступ к одним и тем же ресурсам (например, переменным памяти, файлам или устройствам ввода-вывода) без синхронизации. При этом результаты операций могут зависеть от порядка их выполнения, что делает поведение программы неопределённым.
Примером состояния гонки может быть ситуация, когда два потока пытаются изменить одну и ту же переменную. Если эти изменения не синхронизированы правильно, результаты могут быть непредсказуемыми, в зависимости от того, какой поток завершит операцию первым.
Для предотвращения состояний гонки часто используются механизмы синхронизации, такие как мьютексы, семафоры, блокировки и атомарные операции, которые гарантируют правильное взаимодействие между потоками или процессами при доступе к общим ресурсам.
#digest
Swiftfin: видеоплеер Jellyfin для iOS и tvOS
Swiftfin — это современный видеоклиент для медиасервера Jellyfin (от этой же компании — альтернатива проприетарным Emby и Plex, позволяющая передавать медиа с выделенного сервера на устройства конечных пользователей через множество приложений). Плеер написан на Swift, что позволяет максимально использовать возможности VLC для прямого воспроизведения и выглядеть нативно на всех классах устройств Apple.
Swiftfin — это современный видеоклиент для медиасервера Jellyfin (от этой же компании — альтернатива проприетарным Emby и Plex, позволяющая передавать медиа с выделенного сервера на устройства конечных пользователей через множество приложений). Плеер написан на Swift, что позволяет максимально использовать возможности VLC для прямого воспроизведения и выглядеть нативно на всех классах устройств Apple.
JTAppleCalendar: библиотека календаря на Swift
JTAppleCalendar — календарь для iOS на Swift. Полностью настраиваемый, с настройками ячеек и общего вида, горизонтальным и вертикальным режимом, изменяемыми заголовками, выбором диапазонов и всем прочим.
JTAppleCalendar — календарь для iOS на Swift. Полностью настраиваемый, с настройками ячеек и общего вида, горизонтальным и вертикальным режимом, изменяемыми заголовками, выбором диапазонов и всем прочим.
В пятницу в Москве в концертном зале «Крокус Сити Холл» произошел чудовищный теракт.
Мы глубоко скорбим и выражаем соболезнования семьям погибших и пострадавших в результате этой трагедии.
В ближайшее время мы не будем публиковать материалы.
Берегите себя и своих близких.
Мы глубоко скорбим и выражаем соболезнования семьям погибших и пострадавших в результате этой трагедии.
В ближайшее время мы не будем публиковать материалы.
Берегите себя и своих близких.
Создание крупномасштабных приложений с помощью SwiftUI: руководство по модульной архитектуре
Архитектура приложений - сложная тема, и в конечном итоге лучшая архитектура для проекта зависит от многих факторов. Эти факторы могут включать размер и сложность проекта, навыки и опыт команды, цели и требования проекта.
В конечном счете, ключом к успешной архитектуре приложения является выбор шаблона, соответствующего уникальным потребностям проекта, и постоянная оценка и корректировка архитектуры по мере развития проекта.
Инвестируя время и ресурсы в разработку продуманной и эффективной архитектуры приложения, команды могут гарантировать, что их кодовая база является поддерживаемой, масштабируемой и достаточно гибкой, чтобы адаптироваться к меняющимся требованиям и технологическим тенденциям.
Архитектура приложений - сложная тема, и в конечном итоге лучшая архитектура для проекта зависит от многих факторов. Эти факторы могут включать размер и сложность проекта, навыки и опыт команды, цели и требования проекта.
В конечном счете, ключом к успешной архитектуре приложения является выбор шаблона, соответствующего уникальным потребностям проекта, и постоянная оценка и корректировка архитектуры по мере развития проекта.
Инвестируя время и ресурсы в разработку продуманной и эффективной архитектуры приложения, команды могут гарантировать, что их кодовая база является поддерживаемой, масштабируемой и достаточно гибкой, чтобы адаптироваться к меняющимся требованиям и технологическим тенденциям.
Как работает стек, что это вообще такое и почему он напрямую связан с работой функций.
00:00 Введение
00:49 Что такое стек
01:23 Рост в обратную сторону
02:20 Указатели
03:35 Команды для работы со стеком
04:54 Функции
06:30 Команды перехода
07:18 Фрейм стека
10:37 Переполнение стека
10:50 Передача параметров в функцию
13:09 Способы передачи параметров
13:49 Локальные переменные функции
15:07 Итог
00:00 Введение
00:49 Что такое стек
01:23 Рост в обратную сторону
02:20 Указатели
03:35 Команды для работы со стеком
04:54 Функции
06:30 Команды перехода
07:18 Фрейм стека
10:37 Переполнение стека
10:50 Передача параметров в функцию
13:09 Способы передачи параметров
13:49 Локальные переменные функции
15:07 Итог
Apple официально объявила о своем намерении приобрести южнокорейского гиганта Samsung
Если все пойдет по плану, сделка станет крупнейшей в истории IT-индустрии, сейчас её стоимость оценивается в рекордные 320 миллиардов долларов.
Согласно официальному пресс-релизу, Apple планирует интегрировать технологии и разработки Samsung в свои продукты, чтобы улучшить их качество и конкурентоспособность на рынке. Кроме того, Apple собирается использовать производственные мощности Samsung для выпуска своих устройств, что позволит снизить затраты на производство и увеличить прибыль.
По словам Тима Кука, CEO Apple, данная сделка является стратегическим шагом, направленным на укрепление позиций компании на мировом рынке. Он также подчеркнул, что приобретение Samsung поможет Apple расширить свое присутствие в развивающихся странах, где продукция Samsung пользуется большой популярностью.
В свою очередь, представители Samsung выразили удовлетворение данным решением и заявили, что объединение усилий с Apple позволит им создать еще более инновационные продукты.
Ожидается, что сделка будет завершена к концу текущего года.
Если все пойдет по плану, сделка станет крупнейшей в истории IT-индустрии, сейчас её стоимость оценивается в рекордные 320 миллиардов долларов.
Согласно официальному пресс-релизу, Apple планирует интегрировать технологии и разработки Samsung в свои продукты, чтобы улучшить их качество и конкурентоспособность на рынке. Кроме того, Apple собирается использовать производственные мощности Samsung для выпуска своих устройств, что позволит снизить затраты на производство и увеличить прибыль.
По словам Тима Кука, CEO Apple, данная сделка является стратегическим шагом, направленным на укрепление позиций компании на мировом рынке. Он также подчеркнул, что приобретение Samsung поможет Apple расширить свое присутствие в развивающихся странах, где продукция Samsung пользуется большой популярностью.
В свою очередь, представители Samsung выразили удовлетворение данным решением и заявили, что объединение усилий с Apple позволит им создать еще более инновационные продукты.
Ожидается, что сделка будет завершена к концу текущего года.
Применяем маску с номером телефона
В этой статье покажу как можно применить маску с российским номером телефона к тексту внутри TextField без использования UIKit.
Нюансы:
1. Если использовать onChange, то в консоли выводится вот такой лог: onChange(of: String) action tried to update multiple times per frame, а с использованиeм onReceive такого нет
2. В симуляторе и на девайсе маска применяется корректно и с onChange, и с onReceive, а в unit-тестах пробел после первой семерки не ставится, что приводит к падению теста (т.е. получается не +7 123, а +71 23). Судя по всему, SwiftUI-модификаторы делают дополнительную работу, которая в логике применения маски отсутствует
3. Первая маска в превью подходит бОльшему количеству стран, чем остальные - они подходят только для телефонов России и Казахстана
Автор статьи: Олег Еременко
В этой статье покажу как можно применить маску с российским номером телефона к тексту внутри TextField без использования UIKit.
Нюансы:
1. Если использовать onChange, то в консоли выводится вот такой лог: onChange(of: String) action tried to update multiple times per frame, а с использованиeм onReceive такого нет
2. В симуляторе и на девайсе маска применяется корректно и с onChange, и с onReceive, а в unit-тестах пробел после первой семерки не ставится, что приводит к падению теста (т.е. получается не +7 123, а +71 23). Судя по всему, SwiftUI-модификаторы делают дополнительную работу, которая в логике применения маски отсутствует
3. Первая маска в превью подходит бОльшему количеству стран, чем остальные - они подходят только для телефонов России и Казахстана
Автор статьи: Олег Еременко
• Он будет помогать разработчикам оплачивать комиссию Apple, продавая подписки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Сделайте ваше iOS-приложение меньше с помощью динамических фреймворков
Apple создали собственную замечательную экосистему пакетов Swift Package Manager, но не приложили много усилий, чтобы объяснить, как использовать ее по максимуму.
Упаковать динамический фреймворк достаточно просто, однако для того, чтобы правильно дедуплицировать ресурсы и сделать приложение легким, вам придется пройти через множество недокументированных шагов.
Но когда вы справитесь с этой задачей, то сможете добиться потрясающих результатов, например, сократить бинарный размер приложения на 58%. Потратьте время на то, чтобы разобраться с проектом-примером, понять эти тайные приемы и применить подобные улучшения в своих собственных приложениях.
Обзор по статье:
Создание динамического фреймворка с помощью SwiftPM -> Зонтичные фреймворки -> Убираем дублирование -> Создание фреймворка -> Импорт бинарной цели -> Сборка нашего XCFramework -> Импорт нашего фреймворка -> Результат
Apple создали собственную замечательную экосистему пакетов Swift Package Manager, но не приложили много усилий, чтобы объяснить, как использовать ее по максимуму.
Упаковать динамический фреймворк достаточно просто, однако для того, чтобы правильно дедуплицировать ресурсы и сделать приложение легким, вам придется пройти через множество недокументированных шагов.
Но когда вы справитесь с этой задачей, то сможете добиться потрясающих результатов, например, сократить бинарный размер приложения на 58%. Потратьте время на то, чтобы разобраться с проектом-примером, понять эти тайные приемы и применить подобные улучшения в своих собственных приложениях.
Обзор по статье:
Создание динамического фреймворка с помощью SwiftPM -> Зонтичные фреймворки -> Убираем дублирование -> Создание фреймворка -> Импорт бинарной цели -> Сборка нашего XCFramework -> Импорт нашего фреймворка -> Результат
Протокол Identifiable в SwiftUI с примерами
Протокол Identifiable в SwiftUI позволяет добавить уникальную идентификацию объекта. Протокол требует единственного свойства ID любого хэшируемого типа, что делает его гибким протоколом для любых экземпляров.
Несмотря на то, что это относительно простой протокол, несколько возможных крайних случаев могут привести к неожиданным ошибкам в вашем SwiftUI-коде. Поэтому важно понимать, как правильно использовать этот протокол.
Протокол Identifiable в SwiftUI позволяет добавить уникальную идентификацию объекта. Протокол требует единственного свойства ID любого хэшируемого типа, что делает его гибким протоколом для любых экземпляров.
Несмотря на то, что это относительно простой протокол, несколько возможных крайних случаев могут привести к неожиданным ошибкам в вашем SwiftUI-коде. Поэтому важно понимать, как правильно использовать этот протокол.
Please open Telegram to view this post
VIEW IN TELEGRAM