iOS Такой 🍏
3.39K subscribers
419 photos
10 videos
2 files
301 links
IT | Подкасты | Apple | iOS Материалы | Swift

Реклама: @new_repository

Тёплый чат: https://t.me/+tzWmsOMTPpFjMzAy

Бусти: boosty.to/dimov_ios
Download Telegram
Как создать приложение для чата iOS

Используя SwiftUI и Firebase, мы создадим основу для приложения для чата. С его помощью вы сможете добавить функциональность чата в свое приложение. Руководство разбито на следующие разделы:

00:00 Вступление
04:17 Дизайн
07:42 Предположения
08:58 Аутентификация
13:37 Авторизация
23:02 Модель
31:23 Просмотров
47:32 Заключение
🍏Apple разрабатывает MacBook с гибким экраном

• Запуск планируется к 2027 году
Please open Telegram to view this post
VIEW IN TELEGRAM
🍏Еврокомиссия потребовала от Apple объяснений, почему она заблокировала учетную запись Epic Games в App Store.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие дамы канала, поздравляем вас с 8 марта! Желаю большого счастья, любви и исполнение всех желаний❤️

Так же отдельно хочу поздравить нашу ведущую Екатерину @Neifmetus с женским днём! Катя, всех благ 💥☀️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🍏Новые iPad 2024 будут иметь фронтальную камеру, расположенную на длинной грани.
Please open Telegram to view this post
VIEW IN TELEGRAM
Обработка URL-адресов Deeplink в SwiftUI

Диплинки ссылки позволяют открывать приложение и переходить в определенное место сразу после запуска. Примером может быть ссылка на рецепт или фильм на основе выбранной ссылки. Вы можете определить целевую страницу на основе метаданных, предоставляемых URL-адресом.

Вы можете использовать модификатор view в SwiftUI или метод AppDelegate для обработки входящих URL-адресов и соответствующей навигации. При разумной настройке вы можете открывать URL-адреса внутри приложения и перемещаться к местам назначения в любом месте приложения.

Настройка, реализация и пример кода в статье.
Лучшие практики управления состояниями в SwiftUI

Эффективное управление состояниями — ключ к созданию стабильных и отзывчивых приложений в SwiftUI. Ниже приведены некоторые лучшие практики управления состоянием в ваших приложениях SwiftUI:

1. Используйте State и Binding для простых локальных состояний.
2. Для сложных состояний используйте ObservedObject и Published.
3. Используйте EnvironmentObject для совместного использования состояния в несвязанных представлениях.
4. Избегайте больших State переменных.
5. Отложите сложные вычисления и побочные эффекты
Разработка, управляемая тестами (TDD), для исправления ошибок

Test-Driven Development (TDD) — это техника, которая требует, чтобы вы сначала написали тест, прежде чем приступать к реализации решения. Хотя разработчики используют эту методику и в целом во время разработки, есть способ применять ее только для исправления ошибок.

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

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

В статье примеры кода, плюсы и минусы данного подхода.
Что такое состояние гонки (race condition)

Состояние гонки (race condition) — это ситуация, которая возникает в многозадачных или многопоточных программных системах, когда результаты выполнения программы зависят от того, в какой последовательности выполняются инструкции или операции в различных потоках или процессах. Это может привести к непредсказуемому поведению программы или к ошибкам в её выполнении.

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

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

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

#digest
Swiftfin: видеоплеер Jellyfin для iOS и tvOS

Swiftfin — это современный видеоклиент для медиасервера Jellyfin (от этой же компании — альтернатива проприетарным Emby и Plex, позволяющая передавать медиа с выделенного сервера на устройства конечных пользователей через множество приложений). Плеер написан на Swift, что позволяет максимально использовать возможности VLC для прямого воспроизведения и выглядеть нативно на всех классах устройств Apple.
JTAppleCalendar: библиотека календаря на 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 Итог
Apple официально объявила о своем намерении приобрести южнокорейского гиганта Samsung

Если все пойдет по плану, сделка станет крупнейшей в истории 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. Первая маска в превью подходит бОльшему количеству стран, чем остальные - они подходят только для телефонов России и Казахстана


Автор статьи: Олег Еременко
⚡️Популярный AltStore станет полноценным магазином приложений для iOS в ЕС

• Он будет помогать разработчикам оплачивать комиссию Apple, продавая подписки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Сделайте ваше iOS-приложение меньше с помощью динамических фреймворков

Apple создали собственную замечательную экосистему пакетов Swift Package Manager, но не приложили много усилий, чтобы объяснить, как использовать ее по максимуму.

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

Но когда вы справитесь с этой задачей, то сможете добиться потрясающих результатов, например, сократить бинарный размер приложения на 58%. Потратьте время на то, чтобы разобраться с проектом-примером, понять эти тайные приемы и применить подобные улучшения в своих собственных приложениях.

Обзор по статье:
Создание динамического фреймворка с помощью SwiftPM -> Зонтичные фреймворки -> Убираем дублирование -> Создание фреймворка -> Импорт бинарной цели -> Сборка нашего XCFramework -> Импорт нашего фреймворка -> Результат
Чарли Дитс, один из ведущих дизайнеров Safari, покинул Apple.
Протокол Identifiable в SwiftUI с примерами

Протокол Identifiable в SwiftUI позволяет добавить уникальную идентификацию объекта. Протокол требует единственного свойства ID любого хэшируемого типа, что делает его гибким протоколом для любых экземпляров.

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