Pull to refresh
0
Volodymyr Denysov @sebajunread⁠-⁠only

iOS Developer

Send message

Как писать на Objective-C в 2018 году. Часть 1

Reading time10 min
Views28K

Большинство iOS-проектов частично или полностью переходят на Swift. Swift — замечательный язык, и за ним будущее разработки под iOS. Но язык нераздельно связан с инструментарием, а в инструментарии Swift есть недостатки.


В компиляторе Swift по-прежнему находятся баги, которые приводят к его падению или генерации неправильного кода. У Swift нет стабильного ABI. И, что очень важно, проекты на Swift собираются слишком долго.


В связи с этим существующим проектам может быть выгоднее продолжать разработку на Objective-C. А Objective-C уже не тот, что был раньше!


В этом цикле статей мы покажем полезные возможности и улучшения Objective-C, с которыми писать код становится намного приятнее. Каждый, кто пишет на Objective-C, найдет для себя что-нибудь интересное.


Читать дальше →

Xcode и продвинутая отладка в LLDB: Часть 1

Reading time5 min
Views16K
Добрый день, сегодня предлагаю вам ознакомиться с переводом статьи об отладке iOS приложений при помощи LLDB.

Одна из самых интригующих частей презентации WWDC 2018, Xcode и продвинутая отладка в LLDB была представлена инженерами Apple. Они дали несколько полезных советов о том, как использовать точки остановки (breakpoints) в Xcode и низкоуровневый дебаггер (LLDB) для оптимизации процесса отладки багов, где бы разработчик их не поймал.

Статья состоит из трех частей, мы пройдемся по основным тезисам, что были сказаны на WWDC. Я создал демо проект специально для того, чтобы тщательнее разобраться как использовать различные типы точек остановки (breakpoints) совместно с LLDB для поимки и отладки багов в вашем приложении.
Читать дальше →

Микроинтеракции в iOS. Лекция Яндекса

Reading time14 min
Views5.2K
Несколько недель назад в офисе Яндекса прошло специальное мероприятие сообщества CocoaHeads — более масштабное, чем традиционные митапы. Разработчик Антон Сергеев выступил на этой встрече и рассказал о модели микроинтеракций, которой обычно пользуются UX-дизайнеры, а также о том, как применить заложенные в ней идеи на практике. Больше всего внимания Антон уделил анимации.


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

Как уместить в айфоне миллион звёзд

Reading time16 min
Views5.7K


Такая романтичная вещь, как звёздное небо, и такая хардкорная вещь, как оптимизация потребления памяти iOS-приложением, вполне могут идти вместе: стоит попробовать запихнуть это звёздное небо в AR-приложение, как тут же встанет вопрос о том самом потреблении.

Минимизировать использование памяти будет полезно и в очень многих других случаях. Так что этот текст на примере маленького проекта показывает методы оптимизации, способные пригодиться и в совершенно других iOS-приложениях (да и не только iOS-).
Читать дальше →

Как новая функция iOS 12 напомнила мне, что пора лечиться

Reading time4 min
Views20K
Буквально на днях мой iPhone гордо сообщил мне, что стала доступна iOS 12 и предложил мне обновиться. На хабре уже было пару статей о том, что нового анонсировал Apple в этой версии. Но я не заметил там упоминания об одной полезной для смартфонозадротов вроде меня функции «Экранное время». Я давно знал, что мне присуща слишком уж нездоровая зависимость от телефона (впрочем, я не один такой). Теперь мы можем подробнее исследовать свои привычки без установки дополнительных приложений. Под катом — не только описание возможностей, но и некоторые рекомендации по экологии использования смартфона.


Читать дальше →

CoreBluetooth на практике

Reading time10 min
Views19K

Перевод статьи Practical CoreBluetooth for Peripherals


Пару лет назад, впервые столкнувшись в рабочем проекте с Bluetooth, нашел эту статью, которая сильно помогла понять, как это работает, найти “отправную” точку. Надеюсь, что пригодится новичкам.

Об авторе: Йоав Шварц — ведущий iOS разработчик в Donkey Republic, системе байкшеринга в Копенгагене, стремящийся изменить отношение к велотранспорту. Далее речь пойдет от лица автора.

В этой статье я расскажу о практических приемах работы с CoreBluetooth. Сначала о Bluetooth Low Energy (BLE) потому, что не все знакомы с этой технологией, потом о CoreBluetooth, фреймворке от Apple, который даёт нам возможность взаимодействовать с устройствами BLE. Также я поведаю о некоторых приёмах в разработке, о которых сам узнал, пока занимался отладкой, плакал и рвал на голове волосы.
Читать дальше →

Мобильная разработка. Swift: таинство протоколов

Reading time11 min
Views34K
Сегодня мы продолжаем цикл публикаций на тему мобильной разработки под iOS. И если в прошлый раз речь шла о том, что нужно и не нужно спрашивать на собеседованиях, в этом материале мы коснемся тематики протоколов, которая имеет в Swift важное значение. Речь пойдет о том, как устроены протоколы, чем они отличаются друг от друга, и как сочетаются с интерфейсами Objective-C.


Читать дальше →

Как писать программы на стыке мобильной разработки и алгоритмов? Конкурс и истории Яндекса

Reading time7 min
Views11K
С 10 по 22 сентября пройдет конкурс Яндекс.Блиц по мобильной разработке. Регистрация открыта. Блиц — это короткий путь в Яндекс: участникам топ-5 будет достаточно успешно пройти одну секцию собеседования вместо стандартных четырех, чтобы получить предложение по работе.

По случаю конкурса мы поговорили с коллегами об интересных задачах, относящихся сразу и к мобильным платформам, и к алгоритмам. Сегодня мы поделимся их историями с читателями Хабра.



Есть мнение, что разработка мобильных приложений — нечто особенное, далекое от программирования в общем смысле, и специалисты, которые пишут под Android и iOS, никогда не сталкиваются с решением алгоритмоемких задач, ограничиваясь подключением готовых библиотек, версткой экранов, написанием простейшей бизнес-логики и исследованием багов конкретной платформы. Но не всё так просто.

Читать дальше →

Инструменты Apple для машинного обучения

Reading time10 min
Views21K


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


В данной статье мы рассмотрим инструменты для машинного обучения, которые предлагает разработчикам Apple, разберем, что нового в этой области компания показала на WWDC18, и попробуем понять, как можно применить это все на практике.

Читать дальше →

Машинное обучение и мобильная разработка

Reading time33 min
Views17K
Как правило, data scientist имеет смутное представление о мобильной разработке, а разработчики мобильных приложений не занимаются машинным обучением. Андрей Володин — инженер Prisma AI живет на стыке этих двух миров и рассказал ведущим подкаста Podlodka, каково это.

Воспользовавшись моментом, Стас Цыганов (Туту.ру) и Глеб Новик (Тинькофф Банк), во-первых, раз и навсегда прояснили, что никто не обучает нейронные сети на мобильных устройствах. А также разобрались, что в машинном обучении, к сожалению, нет маги; обсудили современные техники вроде глубокого обучения, обучения с подкреплением и капсульных сетей.

В итоге, поскольку Podlodka — аудиошоу про мобильную разработку, к ней и пришли и узнали, как это все работает для мобильных устройств.

Далее текстовая версия этой беседы, а запись подкаста здесь.
Читать дальше →

Универсальное решение для UITableViewRowAction и UIContextualAction

Reading time7 min
Views9.2K


Многие сталкивались с проблемой реализации красивого отображения кнопок для UITableViewCell при сдвиге влево. Некоторые использовали стандартный функционал «из коробки», другие заморачивались над собственной реализацией, а кто-то обошелся Unicode-символами. В этой статье я расскажу как добиться максимальной кастомизации UITableViewRowAction.
Читать дальше →

Что не так с std::visit в современном C++

Reading time6 min
Views45K

Сигма-тип и вы


Давайте поговорим о простой, но мощной концепции в программировании — сигма-типах.

Сигма-тип (тип-сумма, меченное объединение) может содержать значения одного и только одного из нескольких типов. Например, рассмотрим настройки в INI-подобном файле конфигурации. Пусть каждая настройка может быть строкой, целым или булевым значением. Если бы мы хотели сделать свою библиотеку на C++, мы бы написали что-то вроде этого:
Читать дальше →

Производительность в iOS — Core Animation, Offscreen Rendering и System Trace. Часть 2

Reading time7 min
Views14K



Как избежать проблем с производительностью с помощью пресета Core Animation, что использовать для трассировки участков кода и с помощью каких функций сократить долю вычислительных операций в приложении с 26% до 0.6% — читай во второй части статьи по материалам доклада Люка Пархэма на прошлогодней конференции MBLT DEV. Первая часть статьи доступна здесь.


Под катом не только полезные советы, но и последние early bird билеты на MBLT DEV 2018 — купить их можно только сегодня.

Как с первого раза попасть в AppStore: пошаговое руководство

Reading time11 min
Views11K


К запуску курса «Fullstack мобильный разработчик», проводимого совместно с агентством Agima, мы подготовили серию материалов о том, как создавать приложения для мобайла. Будем говорить о кейсах, цифрах, правилах и провалах, но начнем, вместе с Никитой Архиповым из студии Anvics, с темы прохождения релиза в App Store. Разберем, как договориться с ревью-командой и избежать проблем, по шагам расскажем про техническую сторону — от создания сертификата до взаимодействия с Itunes Connect — и про то, о чем все молчат, — как же все таки пройти ревью с первого раза. Готовьте лапки, и поехали!

Пы сы: а еще в этой серии материалов спрятаны скидки на курс: в каждом посте по мобильной разработке есть ребус, в котором зашифровано слово или название решения из области мобайла. За отгаданный ребус вы получаете скидку 10%! Кстати, скидки суммируются, так что если соберете их все, то сможете отхватить курс по очень вкусной цене! Первый ребус ищите уже в этом тексте!

Читать дальше →

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

Reading time3 min
Views19K
Привет, Хабр!

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



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

Парсинг и работа с Codable в Swift 4

Reading time11 min
Views86K


Формат JSON приобрел большую популярность, именно он обычно используется для передачи данных и выполнения запросов в клиент-серверных приложениях. Для парсинга JSON требуются инструменты кодирования/декодирования данного формата, и компания Apple не так давно провела их обновление. В данной статье мы рассмотрим методы парсинга JSON с применением протокола Decodable, сравним новый протокол Codable с предшественником NSCoding, оценим преимущества и недостатки, разберем все на конкретных примерах, а также рассмотрим некоторые особенности, встречающиеся при реализации протоколов.
Читать дальше →

Компьютерное зрение и машинное обучение в PHP используя библиотеку opencv

Reading time9 min
Views35K
Всем привет. Это моя юбилейная статья на Хабре. За почти 7 лет я написал 10 статей (включая эту), 8 из них — технические. Общее количество просмотров всех статей — около полумиллиона.
Основной вклад я внёс в два хаба: PHP и Серверное администрирование. Мне нравится работать на стыке этих двух областей, но сфера моих интересов гораздо шире.

Как и многие разработчики я часто пользуюсь результатами чужого труда (статьи на Хабре, код на гитхабе, ...), поэтому я всегда рад делиться с сообществом своими результатами в ответ. Написание статей — это не только возврат долга сообществу, но так же позволяет найти единомышленников, получить комментарии от профессионалов в узкой сфере и ещё больше углубить свои знания в исследуемой области.

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


Читать дальше →

Получение удаленных данных в iOS

Reading time10 min
Views15K
Это авторский перевод главы 6 Retrieving remote data из книги iOS7 in Action. В отличие от книги, весь интерфейс сделан программно, соответственно убран текст, описывающий, как делать все это в storyboard. Для простоты выбрано единственное положение экрана Portrait и целевая платформа iPhone.

Мы создадим приложение с единственной Label на экране, в которой будет отображаться случайная шутка о Чаке Норрисе, загруженная через API сайта api.icndb.com/jokes/random в момент запуска приложения.


Рис.1 Наше приложение, показывающее шутку о Чаке Норрисе.
Читать дальше →

Objective-C: как работают блоки

Reading time5 min
Views28K
В этой статье я расскажу о расположении блоков (__NSStackBlock__/__NSGlobalBlock__/__NSMallocBlock__), о том, как происходит захват переменных и как это связано с тем, во что компилируется блок.

В данный момент, применение блоков в Objective-C начинается практически с первых дней изучения этого языка. Но в большинстве случаев разработчики не задумываются, как блоки работают внутри. Здесь не будет магии, я просто расскажу об этом подробнее.

Начнем с самого начала, как выглядит блок в Objective-C


Для чего применяются блоки, я расписывать не буду, речь идет не об этом, поэтому давайте сразу рассмотрим интересные моменты на практике.
Читать дальше →

Information

Rating
Does not participate
Location
Plovdiv, Plovdiv, Болгария
Date of birth
Registered
Activity