Telegram Web Link
Почему загрузка пакетов с помощью Swift Package Manager занимает слишком много времени?

Когда мы добавляем зависимость в проект через spm, он извлекает весь репозиторий пакета со всеми ветками и полную историю git, которая может представлять собой годы git-снапшотов.

Суть проблемы тут.

Но почему?

На вопрос ответил инженер по инфраструктуре GitHub (обратите внимание на дату комментария), схожая проблема была и в Cocoapods:

Поверхностное клонирование по какой-то причине обходится намного дороже, чем клонирование всего репозитория. К тому же GitHub ограничивает скорость в таких репах, что приводит к значительному увеличению времени.

Хуже того, фетч может вообще завершиться ошибкой по таймауту.

Так в чем же заключается решение?

Очевидно, многие компании используют такой подход. Они создают отдельный реп с предварительно скомпилированным .xcframework, при этом пользователь получит только нужную часть исходного репозитория.

Например airbnb/lottie применила этот подход и уменьшила размер своего репозитория с +300 МБ до менее 500 КБ!

Signal сделал то же самое: отсюда OneSignal-iOS-SDK пришли к оптимизированной версии OneSignal-XCFramework.

📖 Про другой интересный кейс можно прочитать на хабре.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Что означает spacing = nil в SwiftUI?

Понимание принципов Spacing важно при работе со сложной версткой, а владение определенными техниками может помочь добиться эффектов, которые сложно реализовать традиционными методами.

Как можно видеть на гифке, когда используется nil, расстояние между Text и соседними элементами больше не равны.

Из документации Apple:

При установке nil расстояние должно быть дефолтным по умолчанию для каждой пары subviews.

Но, как оказывается, это значение не фиксировано.

📖 В этой статье объясняется, что на самом деле означает значение nil по умолчанию для параметра Spacing.

Кроме того, рассматриваются и другие аспекты, связанные с этим свойством.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Подготовка к собеседованиям: Swift Concurrency

Подготовил вопросы, которые помогут новичкам и опытным разработчикам, знакомым с концепциями параллелизма и заинтересованным в изучении синтаксиса и API Swift Concurrency.

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

Доступ можно получить здесь или тут сразу на год.

Больше важных тем:
🔗 Блок вопросов: многопоточность (и бонус)
🔗 Собеседования: вопросы на понимание кода
🔗 DispatchQueue: практические вопросы

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как сделать иконку приложения анимированной?

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

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

📖 Почитать увлекательную статью можно здесь (и рекомендую посмотреть остальные статьи блога).

📺 В формате видео вот тут.

🛠 Демо-проект (посмотреть и попробовать повторить) доступен на github. Напоминаю про этот пост, если захотите выложить в стор.

Больше крутых эффектов можно увидеть здесь или тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Объяснение использования @preconcurrency в Swift

Если включить -strict-concurrency для своих существующих проектов, то, вероятнее всего, при первой компиляции проекта Xcode выдаст множество предупреждений и/или ошибок.

Этого можно избежать с использованием @preconcurrency, можно использовать для:

📼 functions
📼 types
📼 protocols
📼 imports

С помощью @preconcurrency появляется возможность импортировать старые модули в новый код.

Это отличный способ начать постепенно внедрять строгий параллелизм по мере приближения выпуска Swift 6.

📖 В этом посте рассмотрены примеры использования и ошибки, которые могут встретиться.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Настраиваемая кнопка с разными состояниями в SwiftUI

Конечно, задача мобильных разработчиков далеко не только в покраске кнопок, но знать несколько подходов и обладать арсеналом таких навыков необходимо.

SwiftUI в несколько раз упрощает создание переиспользуемой кнопки (и добавление конфигов).

📖 Вот тут можно увидеть подходы к созданию такого элемента на реальных примерах.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Протоколы в iOS: назначение и примеры

Даже при частом использовании протоколов начинающие разработчики могут не знать все особенности.

Например, Identifiable постоянно нужен в SwiftUI, но почему он обычно применяется для списков? Или CustomStringConvertible, который вполне подойдёт для более удобного дебага наших моделей.

📖 В этой статье разбираются популярные протоколы на примерах кода.

🧠 Ах да, кстати, приложение уже в тестфлайте и вы можете получить ранний доступ.

Кстати, проголосовавшие в опросе будут приятно удивлены списку тем внутри.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос из приложения iOS IQ

🐱 Попробуйте догадаться, какая временная сложность у алгоритма для решения задачи «Ханойские башни».

Это пример из приложения, доступного на бусти (кстати, есть хардкор-режим для настоящих профессионалов).

Уже сейчас можно попробовать возглавить таблицу лидеров.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как справиться с секцией на написание кода?

Чтобы оценить кандидата, компании используют одну, либо сразу две итерации:

1️⃣ Лайв-кодинг. Нужно решить техническую задачу перед интервьюерами (от 0.5 до 1.5 часов).

2️⃣ Тестовое задание. Чаще всего на срок от одного-двух дней (иногда неделя).

📖 Вот тут можно ознакомиться с некоторыми полезными советами про прохождению этой секции. Среди них:

🔘 Прочтите условие несколько раз. Как известно в условии вопроса часто половина решения (особенно касается лайв-кодинга).
🔘 Разделите техническую задачу на следующие темы: обязательные требования и дополнительные требования.
🔘 Выпишите вопросы. Уточните их у интервьюера.
🔘 Убедитесь, можно ли юзать сторонние либы перед тем, как их добавлять.

При подготовке также важно определиться, какой именно архитектурный паттерн вам нужен.

Другие советы и задачи можно найти вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Алгоритмы: терминология и примеры

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

Например, если код использует один цикл, в котором мы проходим по всем n элементов входных данных, сложность O(n).
Если у нас есть два вложенных цикла, это O(n^2), и так далее.

📖 Конечно, в канале уже был пост про сложность алгоритмов.

Но бывают и далеко не самые очевидные моменты.

🧠 Пришло время новой секции в iOS IQ (добавлено две части, на теорию и на оценку кода). Есть и интерактивный формат в тестфлайте.

❤️Получить доступ можно сразу на год.

🐱 А в честь WWDC со скидкой 24% - вот тут (ссылка работает ровно неделю).

😃 iOS IQ
Please open Telegram to view this post
VIEW IN TELEGRAM
Начали с показа обновлений Vision OS 2

Из крутых фич, теперь технологии позволят создавать из 2D фото с погружением.

Пообещали упростить работу с технологиями, добавили новые API. Volumetric APIs, TabletopKit, Enterprise APIs.

Добавили 8 новых стран, где можно купить.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS 18

Расширили работу с иконками на домашнем экране (в андроиде уже тысячу лет?).

😎 Иконки можно красить, привет, tintColor!

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Control Center

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

Для этого появится новый Control API.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно скрывать приложения

🕺 Ну наконец-то!

Магические слова: Lock an app.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Wallet

💰Tap to cash! - фича для оплаты, просто направив телефон друг на друга.

Где будет работать, Крейг? Где?!

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Редизайн приложения Photos!

Фильтр по скриншотам (очень полезная фича при разработке), новый интерфейс для сортировки по времени, ввели Collections - можно искать фото по темам.

Коллекции можно сортировать, пинить и не только.

Добавили карусель с лучшими моментами и Featured Photos (всё можно кастомизировать).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Все новые фичи iOS 18 одной картинкой

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/06/28 11:36:43
Back to Top
HTML Embed Code: