ar
Feedback
iOS Dev

iOS Dev

الذهاب إلى القناة على Telegram

👨‍💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift

إظهار المزيد
7 877
المشتركون
-424 ساعات
+27 أيام
-5430 أيام
أرشيف المشاركات
iOS Dev
7 877
Flappy Dird — игра внутри MacOS Finder Прошлая неделя оказалась немного тяжелее, чем обычно, а всё из-за короны, которая не выбирает времени, когда напасть (и это несмотря на 3 прививки в прошлом). 🚩 И чтобы было немного проще влиться в рабочие будни, сегодня развлекательный пост. Я люблю необычные подходы к разработке и решения, которые могут удивить. И пусть эта игра работает со скоростью 4 кадра в секунду, зато тут есть рекорды и даже баннеры. А о сложностях, работе с AppleScript и почему игра не может работать быстрее, можно прочесть в блоге разработчика. 📖 Кстати, если вам интересен исходный код, то он в опенсорсе. 😃 iOS Dev

iOS Dev
7 877
⭐️На Swift.org появился новый раздел Packages! Есть общие категории: сервер, сеть, тестирование и логирование. Но не только о
⭐️На Swift.org появился новый раздел Packages! Есть общие категории: сервер, сеть, тестирование и логирование. Но не только они. Например, представлены пакеты, содержащие макросы. При выборе категории показаны примеры некоторых популярных пакетов для этой категории, а также полезная инфа. Это отличный способ получить представление о разнообразии пакетов, доступных для Swift. 📖 Изучить их детальнее можно здесь. 😃 iOS Dev

iOS Dev
7 877
Разбор особенностей протоколов в Swift Какими бы мощными не были возможности протоколов, мы должны знать и о скрытых свойства
Разбор особенностей протоколов в Swift Какими бы мощными не были возможности протоколов, мы должны знать и о скрытых свойствах. Иногда неочевидные особенности могут затруднить оценку кода, тем более когда протоколы наследуют от других протоколов. В целом о них можно рассуждать с четырех разных точек зрения: 1️⃣ Использование в рантайме. 2️⃣ Использование во время компиляции. 3️⃣ Протоколы с ограничениями во время компиляции. 4️⃣ Синтез реализаций протокола и его влияние на время компиляции. 📖 Вот тут есть разбор различных ситуаций, которые проясняют путаницу при работе с протоколами. 😃 iOS Dev

iOS Dev
7 877
Breadcrumbs: утилита-багтрекер на основе комментариев 🛠 На гитхабе есть забавная утилита, которая позволяет увидеть все комм
Breadcrumbs: утилита-багтрекер на основе комментариев 🛠 На гитхабе есть забавная утилита, которая позволяет увидеть все комментарии TODO и FIXIT, которые вы добавили в исходный код. Для этого нужно запустить приложение и выбрать папку проекта. Выглядит как любопытная мысль 😉 😃 iOS Dev

iOS Dev
7 877
Знакомство с bash-скриптами для iOS-разработчиков Использование Bash может помочь выполнить широкий спектр задач, например: �
Знакомство с bash-скриптами для iOS-разработчиков Использование Bash может помочь выполнить широкий спектр задач, например: 🔘 автоматизация процессов сборки; 🔘 управление файловыми системами; 🔘 запуск тестов; 🔘 развертывание приложений. Любую команду, которую мы можем запустить в терминале, можно запустить, используя Bash. 📖 В этой статье рассмотрены основы написания скриптов и практический пример разработки для iOS, с помощью которого вы сможете создавать скриншоты для разных устройств и языков. 😃 iOS Dev

iOS Dev
7 877
🎉 Вышла тех-превью версия Skip — технологии для кроссплатформенных приложений на базе iOS! По словам разработчика, Skip выст
🎉 Вышла тех-превью версия Skip — технологии для кроссплатформенных приложений на базе iOS! По словам разработчика, Skip выступает в роли команды Android (как по мне, это слишком громко сказано), создавая эквивалентное приложение параллельно с iOS-версией. Сердцем Skip является интеллектуальный транспилятор языка Swift в Kotlin (и еще несколько лет назад Skip был бы невозможен). Для анализа исходного кода используется SwiftSyntax, после чего код преобразуется в Kotlin, сохраняя даже комментарии. Благодаря схожести языков, результат часто не отличается от Kotlin, который был бы написан нативно (но с оговорками). 🧑‍💻 Онлайн-playground, в котором можно попробовать возможности Skip. 📖 Документация. И хотя поддержка API по-прежнему ограничена (будут сложности с внедрением SwiftData или, например, Firebase), все библиотеки Skip имеют открытый исходный код и разработчик приглашает поучаствовать в их улучшении. 😃 iOS Dev

iOS Dev
7 877
Реализация загрузки и сохранения офлайн-карт в приложении от автора Pedometer++ 🗺️ Как правило, большинство приложений испол
Реализация загрузки и сохранения офлайн-карт в приложении от автора Pedometer++ 🗺️ Как правило, большинство приложений используют принцип определения прямоугольной области, которую необходимо покрыть загружаемыми картами, и затем сохраняют эту область в список наборов автономных карт. У такого подхода есть ряд преимуществ, но автор решил использовать свой вариант благодаря использованию системы карт XYZ/Slippy. В этой системе при каждом увеличении разрешения масштабирования количество тайлов на нижнем уровне увеличивается в четыре раза. 📖 А вот тут можно узнать, с какими сложностями можно столкнуться и через какие этапы нужно пройти для такой реализации. 😃 iOS Dev

iOS Dev
7 877
Структуры данных в Swift: знакомство с базовыми понятиями Структуры данных - это строительные блоки при разработке программно
Структуры данных в Swift: знакомство с базовыми понятиями Структуры данных - это строительные блоки при разработке программного обеспечения. 📖 В этой вводной статье, особенно полезной для новичков, рассматриваются различные структуры данных, доступные в Swift, их применение и несколько простых примеров кода. 😃 iOS Dev

iOS Dev
7 877
Способы измерения производительности Swift-кода Если какая-то часть приложения оказывается медленной, например, по результата
Способы измерения производительности Swift-кода Если какая-то часть приложения оказывается медленной, например, по результатам Time Profiler в инструментах, то необходимо знать способы для улучшения этого кода. Для этого можно попробовать: 🔘 Написание юнит-теста в проекте Xcode. 🔘 Использование Playground 🔘 Написание юнит-теста и его использование через терминал. 📖 Более детально с этими способами и выводами можно ознакомиться в этом материале. 😃 iOS Dev

iOS Dev
7 877
Как учить переполненный мозг или про способности решать сложные задачи 📖 Одна из самых крутых и интересных статей на хабре —
Как учить переполненный мозг или про способности решать сложные задачи 📖 Одна из самых крутых и интересных статей на хабре — про математические способности и то, как сейчас люди современности подходят к решению тех или иных проблем. Автор уделяет особое внимание тому, что сейчас студенты решают задачи хуже, чем раньше. Отчасти из-за многообразия таких простых в освоении и доступных инструментов (google lens, chatgpt, и так далее). Но важно отметить, что уровень развития человека сегодня, и, например, в 1930 году абсолютно несопоставим. Те, кто сегодня умеренно справляются с математическими (не только) задачами, раньше считались бы едва ли не гениями. Масштабные исследования на счёт этого можно прочитать здесь (кстати, там упоминается и GTA, и Zelda в качестве примеров тренировок). На мой взгляд, именно поэтому особенно важно создавать вызовы, например, реализацию своего компонента, или же рассмотреть принципы тех или иных алгоритмов и попробовать найти их преимущества. Вообще, книги про тренировки мозга, особенно те, которые дают какие-то рекомендации я не считаю панацеей. И их можно учитывать только как взгляд со стороны, но не руководство к действию. Несмотря на это, не могу не отметить диаграмму выше. Вы же слышали про состояние потока? Диаграмма основана на исследованиях о вызовах в процессе наших с вами задач (тут 📺 лекция). 🚩 Вкратце, чтобы достичь такого состояния, нужно, чтобы уровень задач оказался выше среднего, а уровень навыков при этом позволил с ними справляться. Во всех других ситуациях может возникнуть или апатия, или уровень стресса будет слишком высок. 😃 iOS Dev

iOS Dev
7 877
Диспетчеризация потоков и Actors: как их использовать Акторы обеспечивают выполнение кода в определенном потоке (например, в
Диспетчеризация потоков и Actors: как их использовать Акторы обеспечивают выполнение кода в определенном потоке (например, в основном или фоновом). Они помогают синхронизировать доступ к мутабельным состояниям и предотвращать потенциальные гонки данных. 📖 В этой статье рассматривается, что происходит при вызове методов, помеченных любым атрибутом actor и как избегать непредвиденных сбоев приложения при определенных контекстах. 😃 iOS Dev

iOS Dev
7 877
Разделение данных на примере использования .chunked() 🧑‍💻 Один из самых важных источников знаний для просмотра реализации т
Разделение данных на примере использования .chunked() 🧑‍💻 Один из самых важных источников знаний для просмотра реализации тех или иных алгоритмов — Swift Algorithms. Например, если вы пишете много длинных и непростых для чтения циклов, то есть вполне приличный шанс, что уже существует нужный алгоритм. 🌎 Допустим, в приложении для путешествий нужно показать список всех мест, которые вы посетили или планируете посетить, отсортированных и сгруппированных по дате в порядке убывания. 📖 В этом посте рассматривается, как юзать алгоритм .chunked() для разделения массива и отображения результатов в нужном виде. 😃 iOS Dev

iOS Dev
7 877
Комбинирование разных типов диаграмм для создания уникального дизайна Существует множество различных типов графиков. Они прос
Комбинирование разных типов диаграмм для создания уникального дизайна Существует множество различных типов графиков. Они просты в использовании и обладают широкими возможностями настройки. 📖 Например, в этой статье автор создаёт комбинированную диаграмму для отображения данных на базе Line Chart и Area Chart. 😃 iOS Dev

iOS Dev
7 877
Swift-библиотека для моделирования и визуализации графов ⭐️Её целью является расположение узлов графа так, что все рёбра имели бы более-менее одинаковую длину, ну и свести к минимуму число пересечений рёбер. Часто подобное можно увидеть в визуализации соцсетей, связей страниц в той-же вики, например, и так далее. Вы наверняка видели разные реализации таких штук на других языках, но вдруг вам пригодится и такое решение. 🛠 Сама либа от Zhen Li доступна здесь, и получившийся итог завораживает! 😃 iOS Dev

iOS Dev
7 877
❗ В России разрешили использовать альтернативные способы покупок в App Store! Для этого нужно будет использовать StoreKit Ext
В России разрешили использовать альтернативные способы покупок в App Store! Для этого нужно будет использовать StoreKit External Purchase Link Entitlement, выполнить ряд условий и заполнить форму. При этом комиссия Apple составит 27 % от выручки. Важнейший шаг к альтернативным сторам? 😃 iOS Dev

iOS Dev
7 877
8 советов по оптимизации приложения для iOS 📺 Itay Brenner и Vincent Pradeilles дают практические советы и разбирают способы повышения производительности в видео. Более детально разделы доступны по следующим тайм-кодам: 1️⃣ Работа с бинарными символами. 2️⃣ Шаринг кода и ресурсов. 3️⃣ Оптимизация ассетов. 4️⃣ Сохранение основного потока лёгким по возможности. 5️⃣ Использование Static Dispatch. 6️⃣ Разбор менеджеров пакетов, их преимущества и недостатки. 7️⃣ Оптимизация CoreML-моделей. 8️⃣ Про постоянные улучшения. 😃 iOS Dev

iOS Dev
7 877
Добавление Firebase Analytics замедляет запуск приложения на 30% Emerge Tools замерила производительность топовых аналитическ
Добавление Firebase Analytics замедляет запуск приложения на 30% Emerge Tools замерила производительность топовых аналитических SDK для iOS. 👨‍💻 Тестили на базовом приложении под iOS (тот, что по дефолту при создании проекта), так как его размер всего 118,5 КБ и нет доп. нагрузки. Либы добавляли через SPM, а затем сравнивали размер и производительность каждого запуска. 📖 Интересные выводы и результаты других SDK в этом посте. Кстати, тут же и объясняется, почему выбрали относительное, а не абсолютное время сравнения. 😃 iOS Dev

iOS Dev
7 877
Обновление местоположения пользователя с помощью Core Location и Swift Concurrency 😎 Мы можем создавать собственные обертки
Обновление местоположения пользователя с помощью Core Location и Swift Concurrency 😎 Мы можем создавать собственные обертки для управления доступом к основным сервисам iOS, используя возможности Swift. Например, для решения задачи получения геолокации через Core Location можно задействовать CheckedContinuation. 📖 А в этом материале рассказано, как написать свой Location Manager, запросить авторизацию и правильно обновлять локацию пользователя. 😃 iOS Dev

iOS Dev
7 877
Универсальный датасорс (хранилище данных) в iOS-разработке Такие решения предоставляют разработчикам API для доступа к данным
Универсальный датасорс (хранилище данных) в iOS-разработке Такие решения предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных. 📖 В статье на хабре рассматриваются: 🔘 Cтандартные подходы к регистрации и конфигурации ячеек в коллекции. 🔘 Альтернативный подход с использованием ViewRegistration. 🔘 Пример реализации универсального датасорса (на базе Diffable Datasource) 🔘 Преимущества, особенности, сложности и недостатки подхода. 😃 iOS Dev