Работа с файлами конфигурации Xcode
🛠 Узнайте, как управлять различными окружениями iOS с помощью файлов .xcconfig.
В прошлом руководстве можно ознакомиться со способом, использующим вкладку настроек Xcode для сборок develop, staging и release в нашем iOS-приложении.
В этой статье рассматривается альтернативный способ достижения тех же результатов — с помощью файлов конфигурации Xcode .xcconfig.
📖 Давайте почитаем.
🛠 Узнайте, как управлять различными окружениями iOS с помощью файлов .xcconfig.
В прошлом руководстве можно ознакомиться со способом, использующим вкладку настроек Xcode для сборок develop, staging и release в нашем iOS-приложении.
В этой статье рассматривается альтернативный способ достижения тех же результатов — с помощью файлов конфигурации Xcode .xcconfig.
📖 Давайте почитаем.
👍8🔥2
Разобрал структуру Swift Package.
Не исключаю, что многие уже несколько раз их создавали по тем или иным причинам.
🛠 Хочу верить, что остальным этот разбор может пригодиться или покажется любопытным.
Не исключаю, что многие уже несколько раз их создавали по тем или иным причинам.
🛠 Хочу верить, что остальным этот разбор может пригодиться или покажется любопытным.
Telegraph
Структура Swift Package
Создание package Мы можем использовать Xcode, как вы уже догадались (в этом примере используется 13.3). После открытия Xcode нужно перейти File -> New -> Package:
👍8❤1🔥1
iOS Dev
Всё, что нужно знать об утечках памяти В статье c громким названием автор старается ответить на следующие вопросы. — Что такое утечка памяти в iOS? — Почему происходит утечка памяти? — Из-за чего ARC не может освободить память? — Утечки памяти в closure?…
Ещё один материал про поиск утечек памяти
Тема остаётся актуальной и сложной, поэтому по возможности продолжу делиться с вами найденной информацией.
В статье Vitor рассказывает не об одной, а сразу о трёх техниках для поиска утечек в iOS. Что ж, что-то из этого точно стоит взять на заметку!
👏 212
Тема остаётся актуальной и сложной, поэтому по возможности продолжу делиться с вами найденной информацией.
В статье Vitor рассказывает не об одной, а сразу о трёх техниках для поиска утечек в iOS. Что ж, что-то из этого точно стоит взять на заметку!
👏 212
👏11👍4🔥2
Как добавлять и обрабатывать действия для push и local notifications в iOS
Вероятно, вы знаете, что многие приложения предоставляют такую опцию для своих уведомлений.
💻 Делюсь с вами способом, как создавать такие действия для своих проектов.
😉Кстати, ранее писал о способе тестирования пуш-уведомлений на симуляторе.
Вероятно, вы знаете, что многие приложения предоставляют такую опцию для своих уведомлений.
💻 Делюсь с вами способом, как создавать такие действия для своих проектов.
😉Кстати, ранее писал о способе тестирования пуш-уведомлений на симуляторе.
Telegraph
Как добавлять и обрабатывать действия для push и local notifications в iOS
Локальные и push-уведомления iOS позволяют держать пользователей в курсе событий или получать напоминания о событиях, важных для времени или местоположения, даже если приложение работает в фоновом режиме или неактивно в текущий момент. При использовании уведомлений…
🔥4👍3👏2❤1
Как подключиться к Wi-Fi в iOS с помощью Swift?
🛠 Для этого нужно добавить немного capabilities. Это "Hotspot Configuration" и "Network Extensions".
В коде мы создаём экземпляр нашего конфига, а затем подключаемся. Должен быть показан системный диалог, после которого и произойдет подключение. Иногда может занять несколько секунд.
#интересное
🛠 Для этого нужно добавить немного capabilities. Это "Hotspot Configuration" и "Network Extensions".
В коде мы создаём экземпляр нашего конфига, а затем подключаемся. Должен быть показан системный диалог, после которого и произойдет подключение. Иногда может занять несколько секунд.
#интересное
👍11🔥5🤩5
Ранее публиковал результаты исследования зарплат для iOS-разработчиков в РФ.
Сегодня прочитал о похожем отчёте в другом мире. Решил поделиться с вами структурированными цифрами по данным сайтов PayScale, Glassdoor, ZipRecruiter и Indeed.
А больше деталей, в том числе и по начальным зарплатам при входе в профессию, можно прочесть здесь.
Сегодня прочитал о похожем отчёте в другом мире. Решил поделиться с вами структурированными цифрами по данным сайтов PayScale, Glassdoor, ZipRecruiter и Indeed.
А больше деталей, в том числе и по начальным зарплатам при входе в профессию, можно прочесть здесь.
🔥11👍2😱1
Три золотых правила для weak self
🙈 A strong-retained self не всегда retain cycle.
🐵 A weakly retained self никогда не будет retain cycle.
🙉 Обновите self до strong в верхней части замыканий для избежания странного поведения.
Chris Downie в своём разборе показывает, почему это действительно так на примерах.
Эти правила могут повторяться, но они приведут к более безопасному коду, о котором гораздо легче рассуждать.
😉А ещё эти правила прощезаретейнить, бррр, простите, запомнить.
🙈 A strong-retained self не всегда retain cycle.
🐵 A weakly retained self никогда не будет retain cycle.
🙉 Обновите self до strong в верхней части замыканий для избежания странного поведения.
Chris Downie в своём разборе показывает, почему это действительно так на примерах.
Эти правила могут повторяться, но они приведут к более безопасному коду, о котором гораздо легче рассуждать.
😉А ещё эти правила проще
🔥13👍7❤1🤩1
Сохранение конфиденциальных данных с помощью кейчейна в Swift
При разработке приложений для iOS часто возникает необходимость хранить конфиденциальные данные (пароль, токены, секретные ключи и т.д.) локально.
Для начинающих разработчиков первое, что приходит на ум, это хранить их с помощью UserDefaults. Однако, как мы все знаем, хранение конфиденциальных данных с помощью UserDefaults - очень плохая идея, потому что данные, хранящиеся с помощью UserDefaults, не шифруются и крайне небезопасны.
🏦 Для безопасного хранения конфиденциальных данных локально, мы должны использовать keychain (связку ключей), предоставляемую Apple. Это довольно старый фреймворк, поэтому, как вы увидите позже, его API недостаточно Swifty, как у других современных фреймворков Apple.
📖 В этой статье рассказывается, как создать универсальный хелпер, работающий как в iOS, так и в macOS, который сохраняет, обновляет, читает и удаляет данные с помощью keychain.
При разработке приложений для iOS часто возникает необходимость хранить конфиденциальные данные (пароль, токены, секретные ключи и т.д.) локально.
Для начинающих разработчиков первое, что приходит на ум, это хранить их с помощью UserDefaults. Однако, как мы все знаем, хранение конфиденциальных данных с помощью UserDefaults - очень плохая идея, потому что данные, хранящиеся с помощью UserDefaults, не шифруются и крайне небезопасны.
🏦 Для безопасного хранения конфиденциальных данных локально, мы должны использовать keychain (связку ключей), предоставляемую Apple. Это довольно старый фреймворк, поэтому, как вы увидите позже, его API недостаточно Swifty, как у других современных фреймворков Apple.
📖 В этой статье рассказывается, как создать универсальный хелпер, работающий как в iOS, так и в macOS, который сохраняет, обновляет, читает и удаляет данные с помощью keychain.
👍8🔥3👏1
Анализ HTTP-трафика с помощью стандартных инструментов Xcode
👨🎓 На прошлогоднем WWDC было множество полезных сессий, одна из недооценённых — объяснение работы с инструментом по анализу трафика.
Michael Abadi Santoso кратко сформулировал принципы для использования Instruments Network для записи и анализа HTTP-трафика вашего приложения.
Вот тут рассказывается, как исследовать и визуализировать поведение сеансов, задач и отдельных HTTP-запросов, чтобы обеспечить эффективную передачу данных и соблюдение конфиденциальности.
💻 Но можно и посмотреть картинки.
👨🎓 На прошлогоднем WWDC было множество полезных сессий, одна из недооценённых — объяснение работы с инструментом по анализу трафика.
Michael Abadi Santoso кратко сформулировал принципы для использования Instruments Network для записи и анализа HTTP-трафика вашего приложения.
Вот тут рассказывается, как исследовать и визуализировать поведение сеансов, задач и отдельных HTTP-запросов, чтобы обеспечить эффективную передачу данных и соблюдение конфиденциальности.
💻 Но можно и посмотреть картинки.
👏8👍6🔥1
А может ну его всё, и в TikTok пойти?
🛠 Ладно-ладно, у нас технический канал, а вы о чём подумали?
Вот вам история о том, какие вопросы могут задать в крупных компаниях на собеседовании. Например, в TikTok. Пусть и не с хэппи-эндом, но история любопытная.
Кандидат прошёл два интервью по Zoom, каждое по 45 минут — в течение одной недели.
Первый этап состоял из двух частей.
- Термины iOS.
- Что нового в мажорной версии? На момент собеседования интервьюер хотел услышать про виджеты.
- Попросили оптимизировать небольшой участок кода.
- Спросили про разницу setNeedsLayout, layoutIfNeeded, layoutSubview.
- Проверили знание того, как найти краши при нехватке памяти без использования Crashlytics.
Во второй части попросили решить задачу, которая на скриншоте.
Второй этап
Целиком и полностью был посвящен проектированию. А также спросили про самый жёсткий баг, на поиски которого ушло больше всего времени.
📖 В конце статьи автор делится советами, как пройти собеседование, или хотя бы повысить шансы на успех.
🛠 Ладно-ладно, у нас технический канал, а вы о чём подумали?
Вот вам история о том, какие вопросы могут задать в крупных компаниях на собеседовании. Например, в TikTok. Пусть и не с хэппи-эндом, но история любопытная.
Кандидат прошёл два интервью по Zoom, каждое по 45 минут — в течение одной недели.
Первый этап состоял из двух частей.
- Термины iOS.
- Что нового в мажорной версии? На момент собеседования интервьюер хотел услышать про виджеты.
- Попросили оптимизировать небольшой участок кода.
- Спросили про разницу setNeedsLayout, layoutIfNeeded, layoutSubview.
- Проверили знание того, как найти краши при нехватке памяти без использования Crashlytics.
Во второй части попросили решить задачу, которая на скриншоте.
Второй этап
Целиком и полностью был посвящен проектированию. А также спросили про самый жёсткий баг, на поиски которого ушло больше всего времени.
📖 В конце статьи автор делится советами, как пройти собеседование, или хотя бы повысить шансы на успех.
🔥10👍7❤2
Структура памяти в Swift
Посмотрите, как Swift управляет, хранит и ссылается на различные типы данных и объекты, используя безопасный для памяти подход.
Материал состоит из двух больших частей:
- Схема памяти типов значений (value types) в Swift.
- Ссылочные типы (reference types).
Краткий вывод:
🛠 Короче говоря, retain cycles - отстой, но в большинстве случаев их можно избежать, просто используя правильное ключевое слово. Под капотом ARC делает отличную работу, за исключением нескольких крайних случаев, когда вам придется прервать цикл.
Swift - это безопасный для памяти язык программирования по своей конструкции.
Язык гарантирует, что каждый объект будет инициализирован, прежде чем вы сможете его использовать, а объекты, живущие в памяти, на которые больше нет ссылок, будут автоматически деаллоцированы.
Индексы массивов также проверяются на ошибки out-of-bounds. Это дает нам дополнительный уровень безопасности, за исключением случаев, когда вы пишете небезопасный Swift-код 🤔.
Посмотрите, как Swift управляет, хранит и ссылается на различные типы данных и объекты, используя безопасный для памяти подход.
Материал состоит из двух больших частей:
- Схема памяти типов значений (value types) в Swift.
- Ссылочные типы (reference types).
Краткий вывод:
🛠 Короче говоря, retain cycles - отстой, но в большинстве случаев их можно избежать, просто используя правильное ключевое слово. Под капотом ARC делает отличную работу, за исключением нескольких крайних случаев, когда вам придется прервать цикл.
Swift - это безопасный для памяти язык программирования по своей конструкции.
Язык гарантирует, что каждый объект будет инициализирован, прежде чем вы сможете его использовать, а объекты, живущие в памяти, на которые больше нет ссылок, будут автоматически деаллоцированы.
Индексы массивов также проверяются на ошибки out-of-bounds. Это дает нам дополнительный уровень безопасности, за исключением случаев, когда вы пишете небезопасный Swift-код 🤔.
🔥9👍4🤯3
Вариативные параметры (variadic parameters) позволяют передавать в функцию ноль или более значений определенного типа.
👍 Замечательная особенность Variadic Parameters заключается в том, что Swift обрабатывает преобразование одного значения в коллекцию значений. Мы можем сохранить наши API более читабельными, в то время как Swift позаботится о преобразовании.
📖 Давайте посмотрим, как это работает.
👍 Замечательная особенность Variadic Parameters заключается в том, что Swift обрабатывает преобразование одного значения в коллекцию значений. Мы можем сохранить наши API более читабельными, в то время как Swift позаботится о преобразовании.
📖 Давайте посмотрим, как это работает.
👍7❤1👏1