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

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

#ios #mobile #swift
加入频道
iOS Dev
Всё, что нужно знать об утечках памяти В статье c громким названием автор старается ответить на следующие вопросы. — Что такое утечка памяти в iOS? — Почему происходит утечка памяти? — Из-за чего ARC не может освободить память? — Утечки памяти в closure?…
Ещё один материал про поиск утечек памяти

Тема остаётся актуальной и сложной, поэтому по возможности продолжу делиться с вами найденной информацией.

В статье Vitor рассказывает не об одной, а сразу о трёх техниках для поиска утечек в iOS. Что ж, что-то из этого точно стоит взять на заметку!

👏 212
Как добавлять и обрабатывать действия для push и local notifications в iOS

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

💻 Делюсь с вами способом, как создавать такие действия для своих проектов.

😉Кстати, ранее писал о способе тестирования пуш-уведомлений на симуляторе.
Как подключиться к Wi-Fi в iOS с помощью Swift?

🛠 Для этого нужно добавить немного capabilities. Это "Hotspot Configuration" и "Network Extensions".

В коде мы создаём экземпляр нашего конфига, а затем подключаемся. Должен быть показан системный диалог, после которого и произойдет подключение. Иногда может занять несколько секунд.

#интересное
Ранее публиковал результаты исследования зарплат для iOS-разработчиков в РФ.

Сегодня прочитал о похожем отчёте в другом мире. Решил поделиться с вами структурированными цифрами по данным сайтов PayScale, Glassdoor, ZipRecruiter и Indeed.

А больше деталей, в том числе и по начальным зарплатам при входе в профессию, можно прочесть здесь.
Три золотых правила для weak self

🙈 A strong-retained self не всегда retain cycle.

🐵 A weakly retained self никогда не будет retain cycle.

🙉 Обновите self до strong в верхней части замыканий для избежания странного поведения.

Chris Downie в своём разборе показывает, почему это действительно так на примерах.

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

😉А ещё эти правила проще заретейнить, бррр, простите, запомнить.
Сохранение конфиденциальных данных с помощью кейчейна в Swift

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

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

🏦 Для безопасного хранения конфиденциальных данных локально, мы должны использовать keychain (связку ключей), предоставляемую Apple. Это довольно старый фреймворк, поэтому, как вы увидите позже, его API недостаточно Swifty, как у других современных фреймворков Apple.

📖 В этой статье рассказывается, как создать универсальный хелпер, работающий как в iOS, так и в macOS, который сохраняет, обновляет, читает и удаляет данные с помощью keychain.
Анализ HTTP-трафика с помощью стандартных инструментов Xcode

👨‍🎓 На прошлогоднем WWDC было множество полезных сессий, одна из недооценённых — объяснение работы с инструментом по анализу трафика.

Michael Abadi Santoso кратко сформулировал принципы для использования Instruments Network для записи и анализа HTTP-трафика вашего приложения.

Вот тут рассказывается, как исследовать и визуализировать поведение сеансов, задач и отдельных HTTP-запросов, чтобы обеспечить эффективную передачу данных и соблюдение конфиденциальности.

💻 Но можно и посмотреть картинки.
А может ну его всё, и в TikTok пойти?

🛠 Ладно-ладно, у нас технический канал, а вы о чём подумали?

Вот вам история о том, какие вопросы могут задать в крупных компаниях на собеседовании. Например, в TikTok. Пусть и не с хэппи-эндом, но история любопытная.

Кандидат прошёл два интервью по Zoom, каждое по 45 минут — в течение одной недели.

Первый этап состоял из двух частей.

- Термины iOS.
- Что нового в мажорной версии? На момент собеседования интервьюер хотел услышать про виджеты.
- Попросили оптимизировать небольшой участок кода.
- Спросили про разницу setNeedsLayout, layoutIfNeeded, layoutSubview.
- Проверили знание того, как найти краши при нехватке памяти без использования Crashlytics.

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

Второй этап

Целиком и полностью был посвящен проектированию. А также спросили про самый жёсткий баг, на поиски которого ушло больше всего времени.

📖 В конце статьи автор делится советами, как пройти собеседование, или хотя бы повысить шансы на успех.
Структура памяти в Swift

Посмотрите, как Swift управляет, хранит и ссылается на различные типы данных и объекты, используя безопасный для памяти подход.

Материал состоит из двух больших частей:

- Схема памяти типов значений (value types) в Swift.

- Ссылочные типы (reference types).

Краткий вывод:

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

Swift - это безопасный для памяти язык программирования по своей конструкции.

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

Индексы массивов также проверяются на ошибки out-of-bounds. Это дает нам дополнительный уровень безопасности, за исключением случаев, когда вы пишете небезопасный Swift-код 🤔.
Вариативные параметры (variadic parameters) позволяют передавать в функцию ноль или более значений определенного типа.

👍 Замечательная особенность Variadic Parameters заключается в том, что Swift обрабатывает преобразование одного значения в коллекцию значений. Мы можем сохранить наши API более читабельными, в то время как Swift позаботится о преобразовании.

📖 Давайте посмотрим, как это работает.
DevToysMac

Как заявляют разработчики, это практически швейцарский нож для макоси.

💻Опенсорсный продукт с конвертерами, форматтерами, декодерами, чего там только нет.

Великолепная утилита, Уолтер. Просто охрененная, если я правильно понял. Надёжная, как швейцарские часы.

👍 Лайк, если угадали источник цитаты.

#opensource