iOS Dev
7.55K subscribers
958 photos
73 videos
1 file
1.1K links
🍏Канал об iOS-разработке, необычных подходах и решениях.
👨‍💻Автор: Виктор Грушевский (@Viktorianec)
Темы:
⭐️ Подготовка к собеседованиям.
⭐️ Архитектуры и алгоритмы.
⭐️ Код. Много кода.

⚒️База знаний: https://boosty.to/ios_dev

#ios #mobile #swift
加入频道
Ресурс, на котором можно сравнить среднее время проверки приложений

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

Сами же Apple заявляют, что в среднем 50% приложений рассматриваются в течение 24 часов, а более 90% - в течение 48 часов. Если ваша заявка неполная, время рассмотрения может еще больше затянуться или ваше приложение может быть отклонено.

Но мы можем и сами проверить!
Всё, что нужно знать об утечках памяти

В статье c громким названием автор старается ответить на следующие вопросы.

— Что такое утечка памяти в iOS?
— Почему происходит утечка памяти?
— Из-за чего ARC не может освободить память?
— Утечки памяти в closure?
— Возможные решения.
— Некоторые особые сценарии (утечки памяти в синглтонах и статических классах).
Closures без эскейпинга.
— Разница между weak и unowned памятью.
— Идентификация утечек с помощью отладчика.
— Некоторые правила.

👏 1.1K

@iOS Dev
Какое там разрешение у iPhone 13 Pro Max?

Если вы иногда забываете, какие скриншоты нужны для App Store или ваш дизайнер, например, спрашивает, какое разрешение у Apple Watch, чтобы реализовать новое приложение, то могу порекомендовать крутой ресурс со сравнением девайсов по огромному количеству характеристик.

Устройства

iPhone, iPad, iPod Touch, Apple Watch, Apple TV.

В общем, достаточно один раз взглянуть, чтобы сохранить себе в закладки.

Кстати, тут есть наглядное сравнение, на каком девайсе какая максимальная ось, что может быть полезно, если вы поддерживаете широкую линейку устройств.
Работа с Diffable data source и table views с использованием UIKit

🛠 В этом туториале автор приводит пример использования на примере таблицы с двумя секциями.

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

📖Свой перевод статьи (уже по традиции) опубликовал тут.
А вы используете dump()?

Например, в данном случае print() выведет только имя класса.

А вот dump() покажет всю иерархию.

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

value
Значение для вывода в целевой поток.

name
Метка, которую следует использовать при записи значения. По умолчанию используется nil.

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

maxDepth
Максимальная глубина, на которую следует опускаться при записи содержимого значения, имеющего вложенные компоненты. По умолчанию Int.max.

maxItems
Максимальное количество элементов, для которых следует записывать всё содержимое. По умолчанию Int.max.

#dump #print
Про мощь SF Symbols

Наверняка, многие из вас уже довольно давно используют SF Symbols.

Но использовали ли вы, например, foregroundStyle(), который позволяет добавлять градиенты индивидуальным компонентам внутри?

На скриншоте выше как раз пример использования этого подхода для символа person.3.sequence.fill

А ещё больше информации и возможностей можно узнать в этой статье.
‼️Сбер Онлайн в App Store - всё.

Используйте веб-версию.

Вышло официальное заявление Сбербанка:

⚡️В связи с введенными санкциями с 12 апреля мобильное приложение СберБанк Онлайн на платформе iOS недоступно для скачивания и обновления в магазине App Store.

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

Кроме того, для проведения всех необходимых операций клиенты могут использовать веб-версию СберБанк Онлайн, которая адаптирована для мобильных устройств.
Apple всё ещё следит за вами. Без вашего согласия

В текущей версии macOS Monterey, при каждом обновлении системы на системе, содержащей чип M1, такой же как и все новые блестящие/быстрые маки с ARM ("Apple Silicon"), процесс обновления обращается в Apple, чтобы получить специальную подпись загрузки, известную на жаргоне Apple как "билет" (он же ticket).

Это делается абсолютно незашифрованным способом, через стандартный открытый 80 порт HTTP (точно такой же протокол, который запрещен для использования сторонними разработчиками приложений в App Store при передаче приватных данных, таких как уникальные идентификаторы, служащие PII) на хост gs.apple.com.

А какую в себе опасность это несёт - поделился здесь.
This media is not supported in your browser
VIEW IN TELEGRAM
Мне сложно в это поверить, но мы преодолели рубеж в 500 человек 🥳🥳🥳

Для меня это очень важно, и я хочу сказать спасибо каждому из вас за то, что вы здесь.

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

Кроме этого, конечно, продолжу делиться кодом (как говорится, лучше раз попробовать, чем 100 раз увидеть), а также какими-то необычными подходами.

Кстати, если вам понравилась анимация, то она сделана не в стороннем редакторе, а на Swift, а сам проект доступен здесь (в качестве картинки Spark можете использовать любую.

Верю, что кому-то из вас пригодятся эти знания, а про сам CAEmitterLayer постараюсь потом написать отдельно.
This media is not supported in your browser
VIEW IN TELEGRAM
Необычная анимация, эмулирующая поведение Wallet

Разработчик постарался полностью повторить поведение эффекта для Apple Pay без сторонних зависимостей.

Используется CMMotionManager, поэтому особенно круто это анимация выглядит в движении.

Впрочем, попробуйте сами собрать проект и понаклонять девайс.

#animation
Про визуализацию графа билда

Как известно, встроенных инструментов этого в Xcode нет. Выше я рассказывал о простом способе для измерения времени, но к сожалению, сам лог мало о чём говорит, хотя его и можно попробовать разобрать вручную.

Вчера в сессии вопросов-ответов с Михаилом Рубановым (iOS Mobile Head в Dodo Engineering) посчастливилось выиграть промокод на его продукт, о котором он рассказывал в своей статье на хабре.

Так вот, очень полезная штука, скажу я вам, наглядно видно, какой модуль сколько занимает по времени, порядок этих самых модулей, да ещё и зависимости.

Плюс можно отфильтровать настройки, и измерить влияние каждого из модулей на общее время.

Моё пожелание — сделать отчёты более наглядными, улучшить макродизайн. В общем, чтобы этот отчёт можно было показать менеджерам, объясняя, почему нам нужно время на рефакторинг (если вы понимаете, о чём я 😏).

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

Решение на SwiftUI, которое позволяет легко создавать фигуры в стиле рисованного от руки, эскизного, комического стиля.

— Поддержка iOS, tvOS.

— Поддержка всех форм: line, rectangle, circle, ellipse, linear path, arc, curve, polygon, svg path.

— Генерация UIBezierPath для CAShapeLayer.

— Простая кастомизация с помощью опций.

— Удобное использование.

— Понятные функции рисования.

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

#opensource
Самые популярные функции высшего порядка - map, filter и reduce.

Мы все используем их, так как думаем, что синтаксис намного лучше и писать их даже быстрее, чем старый способ for-in loop.

Но так ли это на самом деле?

Задумывались ли вы когда-нибудь о производительности этих встроенных функций?

Они встроенные, поэтому, естественно, они должны быть лучше, правда же?

😎Спойлер — не всё так однозначно!

🛠Автор приводит свои мысли и расчёты в этой статье.
Руководство по использованию willSet и didSet, или Property Observers за три минуты

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

📖В супер-короткой статье привёл примеры для их использования.

😎Понимаю, что скорее всего многие уже давно используют их, или даже перестали использовать. Но надеюсь, что для новичков эта информация окажется полезной.
Если вы видите это сообщение, и рука непроизвольно потянулась скачивать Xcode, то подождите!

👉 Перейдите сюда:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

👉 А потом вот на этот репозиторий, который регулярно обновляется.

7.5k — это не шутки!

🛠 Можно скачать файлы самому, а можно поступить проще и воспользоваться скриптом, который там для этого и лежит.

🤔 Вероятно, Xcode понадобится переоткрыть. Но при условии, что файлы нужны здесь и сейчас, а обновлять Xcode пока не входит в ваши планы, решение должно подойти.