fa
Feedback
iOS Dev

iOS Dev

رفتن به کانال در Telegram

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

نمایش بیشتر
7 877
مشترکین
+124 ساعت
-17 روز
-5130 روز
آرشیو پست ها
iOS Dev
7 877
Повторение эффекта конфетти из iMessage Я люблю анимации в iOS и иногда ищу (или реализую сам), как именно инженеры реализуют те или иные вещи. ✅Например, целый раздел в ноушне я посвятил подборке клёвых эффектов и их реализации. iMessage имеет одну из самых красивых реализаций конфетти на iOS. Но как это работает? Краткий ответ: недокументированная функциональность и недокументированная функциональность. 📖 Хорошо, что есть энтузиасты, как, например, Брайс Паукен, которые тратят свои силы на объяснение и показывают, как можно реализовать такие вещи. 🔗А вот и пример кода для реализации этого эффекта. Кстати, если вы хотите больше примеров с современными технологиями, уделите внимание этому репозиторию от @eleev (и поддержите его звездами). Если вам нравятся такие темы, то напомню, что есть способ поддержки канала. 😃 iOS Dev • 🐱 Узнать о важном

iOS Dev
7 877
Бонус к релизу Swift: протоколы теперь могут быть вложены в перечисления, классы, структуры и акторы На практике это означает
Бонус к релизу Swift: протоколы теперь могут быть вложены в перечисления, классы, структуры и акторы На практике это означает, что протоколы могут быть размещены в определенном контексте, что совершенно точно повысит читабельность, поскольку им больше не нужно быть сложными определениями верхнего уровня. 📖 Ссылка на принятый пропозал. 😃 iOS Dev • 🐱 Узнать о важном

iOS Dev
7 877
🎉 Swift 5.10 уже доступен! В Swift 5.10 реализована полная изоляция данных. Эта важная веха заняла годы активной разработки в течение многих релизов. Модель параллелизма была представлена в Swift 5.5, включая async/await, actors и структурированный параллелизм. В Swift 5.7 был представлен Sendable как фундаментальная концепция для потокобезопасных типов, значения которых могут совместно использоваться в произвольных параллельных контекстах без риска возникновения гонок данных. А теперь, в Swift 5.10, полная изоляция данных обеспечивается во время компиляции во всех областях языка, когда включена соответствующая опция. Swift 5.10 будет выдавать предупреждения о гонках данных в некоторых случаях, когда код может быть признан безопасным с помощью дополнительного анализа компилятора. 📖 Больше изменений в официальном ченджлоге свифта здесь. ✅Узнать больше о Swift Concurrency и познакомиться с возможными кейсами вы можете здесь. 😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше

iOS Dev
7 877
Task и structured concurrency в swift Влад Яндола на хабре проделал монументальную работу и разобрал в серии статей инструмен
Task и structured concurrency в swift Влад Яндола на хабре проделал монументальную работу и разобрал в серии статей инструменты и механизмы structured concurrency, преимущества по сравнению с GCD и привел несколько примеров. Например, вы можете узнать, что такое иерархия тасок, какие могут быть тонкости при работе и многое другое. 1️⃣ Swift async/await. Чем он лучше GCD? 2️⃣ Swift async/await на примерах. 3️⃣ Task и structured concurrency в Swift. ✅Напоминаю, что в базе знаний уже есть огромный раздел по Swift Concurrency, в том числе с разбором подводных камней. 😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше

iOS Dev
7 877
Понятие Изоляции в Swift: определение и виды Изоляцию можно назвать механизмом, который Swift использует для того, чтобы сдел
Понятие Изоляции в Swift: определение и виды Изоляцию можно назвать механизмом, который Swift использует для того, чтобы сделать гонки данных невозможными. С помощью этого механизма компилятор понимает, как осуществляется доступ к данным и когда можно и нельзя делать это гарантированно безопасным способом. Стоит также отметить, что речь идет именно о небезопасном доступе к изменяемому состоянию, но не обо всех видах гонок в целом. Изоляция при этом может быть одной из следующих: 1️⃣ Статической. 2️⃣ Динамической. 3️⃣ Отсутствующей (или, если сказать по другому, без неё). По умолчанию как раз все не изолировано, и нам нужно предпринять явные действия, чтобы это изменить. Типы акторов, глобальные акторы и изолированные параметры — все это формы статической изоляции. Может случиться так, что система типов не описывает или не может описать фактически используемую изоляцию. Это регулярно случается с системами, реализованными до появления параллелизма. Один из инструментов, который решает эту проблему — динамическая изоляция. Это API, которые позволяют нам выразить изоляцию таким образом, что она не видна при простом просмотре определений. ✅В базе знаний я добавил расширенный материал не только с примерами изоляции, но и отличную подборку для работы с протоколами и параллелизмом. 😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше

iOS Dev
7 877
iOS IQ — обновление базы знаний Практически целый месяц я собираю свои исследования, код, статьи и лучшие посты, включая неоп
iOS IQ — обновление базы знаний Практически целый месяц я собираю свои исследования, код, статьи и лучшие посты, включая неопубликованные в этом канале воедино. За это время поддержали канал около 100 человек, и я получил потрясающие и приятные отзывы. Благодаря опросу в том числе. Вот что вы там можете увидеть (и это только верхний уровень): 🏅Подборки лучших материалов для подготовки к собеседованиям. 🧠 Подготовка к собеседованиям (задачи, разбор полётов). 👨‍💻 Личная эффективность (советы, мысли, опыт). 🔨 Код. Правила и необычные подходы. 🔮 Важные моменты при разработке. 📓 Алгоритмическая секция (если вы хотите узнать, что такое мемоизация или разобраться, наконец, с поиском в ширину). 💎 Архитектуры (без фундамента не построить дом, а без архитектуры не реализовать масштабируемое приложение). 🏄 Реализация эффектов (от анимации Wallet до эффектов в приложении Messages или NameDrop). ✅ Пока что ещё есть места в премиум-ноушне, но и они заканчиваются. 🐱 Подпишись, чтобы узнать больше

iOS Dev
7 877
❗️[UPDATE] Обновление Apple на счёт Privacy Manifests 🗓 С 13 марта: если загрузить в App Store Connect приложение с API, требующим причин использования, то разработчику будет отправлено соответствующее письмо. Это будет дополнением к уведомлению в самом App Store Connect. 🗓 С 1 мая: Чтобы загрузить приложение в App Store Connect, будет необходимо указать причины использования перечисленных API, если они есть в коде. Если причину найти не получится, то следует поискать альтернативу этому API. Обязательно нужно использовать версию SDK, включающую манифест конфиденциальности, подписи также потребуются, когда SDK добавляется в качестве бинарной зависимости. 😃 iOS Dev

iOS Dev
7 877
Работа с датами в Swift Каждый раз, когда предстоит работа с датами, некоторые считают, что это приключение на 20 минут. В свою очередь, я вспоминаю этот отрывок из замечательного фильма «Феномен», снятый ещё до момента, когда Траволта решил воспользоваться обликом Кейджа. Сегодня я хотел бы напомнить, что если вы путаетесь в форматах, то есть прекрасный ресурс, а ещё шпаргалка! 📖 И, кстати, можно попробовать воспользоваться собственной стратегией кодирования и декодирования дат в Swift. 😃 iOS Dev • 🐱 Подпишись, чтобы узнать больше

iOS Dev
7 877
Публикация iOS-фреймворка: SPM, CocoaPods, Carthage Наверняка, многие создавали или планировали создать свои фреймворки. Все
Публикация iOS-фреймворка: SPM, CocoaPods, Carthage Наверняка, многие создавали или планировали создать свои фреймворки. Все на самом деле не так страшно, и у эпла, например, есть богатая документация на этот счёт. 📖 Но если нужна простая инструкция, то можно воспользоваться и этой статьёй. ✅Кстати, если вы думаете, какую архитектуру использовать, то для этого есть целый раздел. 😃 iOS Dev • 🐱 iOS IQ

iOS Dev
7 877
Архитектура приложений Архитектура включает в себя способы организации и структурирования кода, который и помогает корректно
Архитектура приложений Архитектура включает в себя способы организации и структурирования кода, который и помогает корректно функционировать всему приложению. Вполне корректно сравнить её с фундаментом (практически как при строительстве домов). Прежде всего, при проектировании архитектуры в крупных проектах нужно уделять внимание потенциальному масштабированию. Бывает, что вместо этого внимание сосредоточено на синтаксисе или узких моментах. Но ведь без удобной в поддержке архитектуры не может быть гибкого кода. А ведь у нас ещё есть безопасность, кэширование, автономность (и всё это можно проектировать в глубину на несколько уровней). Несмотря на это, бывают заблуждения, некорректные практики и ложные направления. В новой секции в iOS IQ я разобрал несколько фундаментальных вещей, о которых не напишут в каналах и о чём нельзя узнать, не столкнувшись на практике. И почему тащить сторонние либы почти никогда не хорошая идея. ✅Узнать больше можно здесь. 😃 iOS Dev • 🐱 iOS IQ

iOS Dev
7 877
Metal в Swift: как писать шейдеры Использование Metal — весьма сложное, но в то же время захватывающее занятие, если научиться использовать его мощь. Материалов по нему всё ещё немного, а лучшие эффекты доступны в двух или трёх репозиториях (в будущем и здесь будет подборка). Сегодня я делюсь с вами фундаментальным исследованием Джейкоба Бартлетта. Он обещает помочь написать собственные шейдеры Metal и использовать их в своих приложениях. Поскольку многие раньше не сталкивались с C++ или графическим кодом, бонусом будет доступное и лаконичное объяснение сложных моментов. Часть I: Введение 🔘Что такое Metal? 🔘Почему Metal такой быстрый? 🔘Настройка проекта. Часть II: Эффект цвета 🔘Настройка нашего View. 🔘Шаблон Metal. 🔘Наша первая шейдерная функция. 🔘Понимание цвета. 🔘Понимание позиции. 🔘Понимание геометрии. 🔘Понимание времени. 🔘Понимание колебаний. 🛠 Проект: Создание диско-лучей. Часть III: Эффект искажения 🔘Понимание искажения. 🔘Понимание Source и Destination. 🛠 Проект: Создание волнистого текста. Часть IV: Эффект слоя 🔘Понимание эффекта слоя. 🔘SwiftUI::Layer и Sampling. 🛠 Проект: Создание ретро-фильтра. Часть V: Свободный полет 🔘Книга о шейдерах. 🔘Случайный шум. 🔘Шум Перлина. Если вы не хотите ждать подборку репозиториев, то кроме неё есть ещё и несколько интересных моментов, которые я описал в iOS IQ. ✅Например, можно узнать, как использовать Metal в UIVIew. 😃 iOS Dev • 🐱 Разбор сертификатов

iOS Dev
7 877
Что скрывают сертификаты для Code Signing? Подписание кода является основополагающей технологией для всех платформ Apple. Например, знаете ли вы, что provisioning profile объединяет пять критериев: кто, что, где, когда и как. Что касается вопроса «кто?», то в TN3125 описывается, как именно каждый профиль включает сертификат для каждого разработчика. Но в нём нет подробного описания того, что такое сертификат. Например, в реальном мире сертификат — это документ, в котором эмитент подтверждает некоторые факты о предмете. Например, в свидетельстве о рождении: 🔘 Эмитентом является региональный орган регистрации. 🔘 Субъект (или же тема) — это вы. 🔘 Факты — это ваше имя, дата рождения, родители и так далее. Эта система основана на том факте, что реальные сертификаты подделать непросто: они печатаются на красивой бумаге, используются специальные штампы, сургучные печати и так далее. Цифровой сертификат преследует ту же цель, что и настоящий. Однако он не может использовать красивую бумагу для предотвращения подделок, что логично. Вместо этого цифровой сертификат основан на криптографии с открытым ключом. Для подписи кода Apple используется стандарт цифровых сертификатов X.509. Сертификат X.509 содержит пять частей информации: 🔘 Реквизиты эмитента. 🔘 Подробности темы. 🔘 Открытый ключ субъекта. 🔘 Обязательные факты, например действительный диапазон дат. 🔘 Необязательные факты, известные как расширения. Эмитент подписывает эту информацию своим закрытым ключом, а затем объединяет ее в сертификат (более подробно - вот тут). У себя я также разобрал понятия .der и .pem, цепочку доверия, Certificate signing request, что происходит при переподписывании кода в App Store, а также путаницу в экосистеме Apple. 😃 iOS Dev • 🐱 Разбор сертификатов

iOS Dev
7 877
Сегодня пятница, у многих выходной и я, надеюсь, что у вас будет две минуты свободного времени Примерно раз в год я собираю обратную связь о своём канале и о том, что вам нравится или не нравится для того, чтобы прокачивать контент в правильном направлении. К сожалению, за это время появилось множество тех, кто копирует материалы отсюда 1 в 1. Иногда удачно, иногда нет, но это касается не только подачи каких-то вещей, но и оформления канала. Конечно, это ещё один повод искать правильные направления развития, но мне нужна ваша помощь. 🐾 Пройдите опрос (полностью анонимный) и помогите сделать выводы. 😃 iOS Dev • 🐱 Доступ к алгоритмам

iOS Dev
7 877
Swift Enums 🤝 Дизайн-системы Если вы работаете над крупными проектами, то наверняка встречали (или писали сами дизайн-систем
Swift Enums 🤝 Дизайн-системы Если вы работаете над крупными проектами, то наверняка встречали (или писали сами дизайн-системы). По факту чаще всего это библиотека, которая объединяет дизайн в переиспользуемые компоненты, цвета, шрифты, иконки и так далее, помогая обеспечить единый стиль во всех ваших продуктах. Или если ещё проще, они позволяют нам избежать изобретения велосипеда для каждого экрана. Грамотно спроектированная дизайн-система сэкономит часы (или сотни часов в будущем). 📖 В этом материале Джейкоб Бартлетт рассказывает о своём опыте создани разных систем и объясняет, почему в итоге остановился на использовании перечислений. 🛠 А вот здесь можно посмотреть на код для этого проекта. 😃 iOS Dev • 🐱 Доступ к необычным эффектам

iOS Dev
7 877
Алгоритмическая секция Это страшный термин, который многих может остановить от попыток пройти серию собеседований в крупные к
Алгоритмическая секция Это страшный термин, который многих может остановить от попыток пройти серию собеседований в крупные компании. Секция лайвкодинга это в том числе и психологическое испытание, непростое, но в то же время показывающее знания кандидата в необычных условиях. К этому тяжело подготовиться, а ещё тяжелее конкурировать, ведь есть целая категория ребят, которые занимаются олимпиадным программированием ещё со школы (или даже раньше). К счастью, чаще всего нам не нужно решать на работе олимпиадные задачи или участвовать в ICPC с целью выиграть золотые медали. Несмотря на это, подготовка никогда не помешает, ведь даже чтобы обработать тысячи айдишников юзеров с заданным условием и не повесить приложуху, иногда нужно тщательно всё взвесить. Поэтому я решил добавить в базу знаний алгоритмическую секцию, где будут не только популярные подходы и примеры алгоритмов на разные темы, но ещё и реальные задачи. Я уже добавил несколько разделов, и перенёс часть своих решённых задач в ноушн. ✅Заходите, доступ пока что можно получить эксклюзивно здесь. 😃 iOS Dev

iOS Dev
7 877
Как проверить число на чётность другим способом? Представим, нам нужно красить ячейку в зависимости от индекса, или, например, менять шрифт у каждого чётного элемента (или ещё тысяча возможных ситуаций). В таком случае мы, как и в большинстве языков, скорее всего будем использовать i % 2 == 0 (стандартный способ проверять остаток от деления). Но знаете ли вы, что для такой ситуации подойдёт и нативный вариант на Swift? x.isMultiple(of: 2) вернёт true если x чётный и false, если x нечётный. Кстати, в Apple рассмотрели и корнер-кейсы, например: x.isMultiple(of: 0)вернёт true, если x это 0 и false в любом другом случае. 🤩 Век живи — век учись, как говорится. 🔗 Напоминаю, что больше таких примеров есть в моём бусти. 😃 iOS Dev

iOS Dev
7 877
Разбор ошибок начинающих iOS-разработчиков Александра Башкирова указывает на несколько популярных ошибок начинающих iOS-разра
Разбор ошибок начинающих iOS-разработчиков Александра Башкирова указывает на несколько популярных ошибок начинающих iOS-разработчиков. 1️⃣ В первой части затронут раздел вёрстки и связанных с ней возможных проблем. 2️⃣ Во второй уделено внимание проблемам с написанием кода, в частности, избыточного форс-анрапа, работе с guard/switch и даже разбираются проблемы с утечками памяти (✅я писал о том, что к этому может приводить, и что можно предпринять). 📖 Статья, которую можно смело рекомендовать новичкам к прочтению доступна на хабре. 😃 iOS Dev

iOS Dev
7 877
iOS IQ: Обновления и новости Я продолжаю работать над базой знаний iOS и делюсь обновлением за выходные. Прозводительность пр
iOS IQ: Обновления и новости Я продолжаю работать над базой знаний iOS и делюсь обновлением за выходные. Прозводительность приложений (вопросы с собеседований на размышление) Когда приложение реагирует на жесты и касания в режиме реального времени, всё хорошо. Но приложения с зависаниями или дёрганым поведением на экране разрушают эту иллюзию. Что можно сделать, чтобы это не происходило? А если вы столкнулись, то как реагировать? Эта тема безгранична, и именно с этим мы боремся на работе над нашими задачами. 🚦Узнать о том, какие шаги можно предпринять, можно здесь. Наконец появился блок по коду и непосредственно разработке В части алгоритмов я вынес карточки с примерами кода в зависимости от сложности, и нарисовал наглядно графики для каждой. Разобрал акронимы (все же знают их значение?): SOLID, DRY, KISS, YAGNI. И добавил бонус с разбором алгоритма сортировки в Swift. Подписывайтесь, я продолжаю разбирать важные темы и делиться своими знаниями (и важными исследованиями) вот тут.

iOS Dev
7 877
Работа с вёрсткой в SwiftUI: интерактивный помощник Оказывается, есть целый сайт, где энтузиасты объясняют как быть с лэйаутом в SwiftUI с помощью примеров. Уже сейчас покрыты темы с Alignment, HStacks, Aspect Ratio, Padding и так далее. Будет полезен новичкам (и тем, кто иногда забывает, на что влияет тот или иной параметр). 💡Вообще, это было бы актуально не только для SwiftUI, но и для некоторых штук в UIKit, как с UIStackView, например. 📖 Посмотреть на доступные варианты (и поперетаскивать элементы) можно здесь. 😃 iOS Dev