Рубрика «swift» - 28

Производительность в iOS или как разгрузить main thread. Часть 1 - 1

Есть разные приёмы и хитрости, которые помогают оптимизировать работу iOS-приложений, когда одна задача должна выполняться за 16,67 миллисекунд. Рассказываем, как разгрузить main thread и какие инструменты лучше подходят для отслеживания стека вызовов в нём.

«Ребята, давайте представим, что вы сможете сократить время запуска на 10 секунд. Умножив это на 5 миллионов пользователей, ежедневно у нас будет 50 миллионов секунд. За год это составит порядка десяти человеческих жизней. Поэтому, если вы сделаете первичную загрузку на 10 секунд быстрее, вы спасёте несколько десятков жизней. Это действительно стоит того, не правда ли?»

Стив Джобс о производительности (времени запуска компьютера Apple II).

Статья основана на докладе iOS-разрабочика из Fyusion Люка Пархема, с которым он выступил на Международной конференции мобильных разработчиков MBLT DEV в прошлом году. Читать полностью »

Изометрия, z-индексы в мобильных играх и их оптимизация - 1

Привет! Недавно мы вышли в релиз с нашей игрой, которую долго и упорно готовили и в процессе которой накопилось немалое количество интересных тем, которыми стоит поделиться с сообществом. Тема будет интересна далеко не только iOS и иным мобильным разработчикам, но и всем тем, кому интересно, как всякие графические вещи работают под капотом, а также всем фанатам 2D-стратегий, коим уже третее десятилетие являюсь я сам.
Читать полностью »

В новом дайджесте рассказываем про быстрые команды Siri и заработок своим умом, дополненную реальность для музеев и дизайн для финтеха, снова про поиск работы и закат React Native, PWA и даже то, как не застрять в обучении. Подключайтесь!

Дайджест интересных материалов для мобильного разработчика #258 (18 июня — 24 июня) - 1Читать полностью »

Привет!

Меня зовут Александр Зимин, я iOS-разработчик в Badoo. Это перевод статьи моего коллеги Швиба, в которой он рассказал, что из себя представляла функция flatMap в Swift и почему одну из её перегрузок переименовали в compactMap. Статья полезна как для понимания процессов, происходящих в репозитории Swift и его эволюции, так и для общего развития.

Swift 4.1: почему Apple переименовала flatMap в compactMap - 1

В функциональном программировании есть чёткое определение того, что должна представлять собой функция flatMap. Метод flatMap берёт список и преобразующую функцию (которая для каждого преобразования ожидает получить ноль или больше значений), применяет её к каждому элементу списка и создаёт единый (flattened) список. Такое поведение отличается от простой функции map, которая применяет преобразование к каждому значению и для каждого преобразования ожидает получить только одно значение.
Читать полностью »

Данная статья является обновлением статьи Получение удаленных данных в iOS, написанной в ноябре 2015 с использованием Objective-C и потому морально устарешней. Сейчас же будет приведен код, переписанный на Swift 3 и iOS 10 (последней версией является Swift 4.1 и iOS 11, но мой компьютер их уже не поддерживает).

Краткая теория

Формат url

http://www.google.com/?q=Hello&safe=off

  • http — протокол, который определяет, по какому стандарту делается запрос. Еще варианты: https, ftp, file
  • www.google.com — имя домена
  • / — директория, где находятся необходимые нам ресурсы.
  • После вопросительного знака (?) идут параметры q=Hello&safe=off. Они состоят из пар ключ-значение.
  • При запросе также указывается метод, который говорит, как сервер должен обрабатывать этот запрос. По умолчанию, это метод GET.

Данный url из примера можно прочитать таким образом: http запрос с методом GET отправляется домену google.com, в корневую директорию /, с двумя параметрами q со значением Hello и safe со значением off.
Читать полностью »

Информационная безопасность банковских безналичных платежей. Часть 5 — 100+ тематических ссылок про взломы банков - 1

При подготовке материалов для следующих статьей набралась довольно обширная коллекция ссылок на темы:

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

В какой-то момент времени количество подобранных материалов переросло в качество, так что данная подборка может заинтересовать уже сама по себе.
Читать полностью »

В новом дайджесте мы обсуждаем прошедшую WWDC и ее новинки, задаем вопросы Авито, выбираем цветовую схему для приложения, выбираем атрибуцию. С праздником!

Дайджест интересных материалов для мобильного разработчика #256 (4 июня — 12 июня) - 1Читать полностью »

Сегодня в нашем дайджесте история одного PWA, проблемы раскрашивания, 10 фактов к 10-летию App Store, распознавание текста за 10 минут, прототипирование, цвета, микровзаимодействия и много другого!

Дайджест интересных материалов для мобильного разработчика #255 (28 мая — 3 июня) - 1Читать полностью »

Всем привет!

Очередная новинка в списке наших курсов: «Разработчик iOS», а значит пришло время интересных штук, которые мы находили за время подготовки курса. В этой заметке автор разбирает как записывать и воспроизводить запросы API для работы UI тестов.

Поехали.

Недавно я интегрировал Embassy и Succulent в свои UI тесты. Если вам нужно запустить UI тесты для приложения, использующего данные API, это руководство может предложить альтернативу mock / stub.

Проблемы:

  • Приложение использует данные API для заполнения UI ;
  • Использование stub’ов может потребовать написания и поддержки большого количества файлов;
  • При использование mock’ов, логика приложения может отличаться от фактического сетевого вызова;
  • Использование настоящего API соединения — СОВЕРШЕННО ИСКЛЮЧЕНО, слишком много переменных и сбоев

UI тесты в Xcode с Embassy и Succulent - 1

Читать полностью »

Вы когда-нибудь писали адаптеры для Keychain или NSUserDefaults? Они полностью состоят из однотипных сеттеров и геттеров. Предлагаю написать логику один раз, предоставив остальное рантайму. За реализацией прошу под кат.

клавиатура с кнопками copy и paste

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js