Как стать автором
Поиск
Написать публикацию
Обновить
11.79

Swift *

Открытый объектно-ориентированный язык

Сначала показывать
Порог рейтинга
Уровень сложности

А в ваших iOS приложениях IBOutlet уже private?

Время на прочтение2 мин
Количество просмотров6.4K
image

Вы наверняка использовали Storyboard или XIB для верстки интерфейсов? Верстать из кода это прекрасно, но иногда намного проще понять как устроен какой-то из компонентов интерфейса, увидев его, а не прочитав. В этой записи я хочу обсудить необходимость использования для IBOutlet модификатора private.

Разработчиков, для которых инкапсуляция IBOutlet является очевидной, тут вряд ли что-то удивит, зато может быть интересен опрос в конце статьи.
Читать дальше →

Very Special Event: как мы смотрели презентацию Apple и что об этом думаем

Время на прочтение6 мин
Количество просмотров5.3K

От презентации Apple, которая должна была пройти 12 сентября, ничего особенного не ждали: три новых модели iPhone и новую версию Apple Watch — об этих новинках знали заранее. Тем не менее, мы в Авито не могли пропустить это событие. Когда за пару дней до Very Special Event мы поняли, что образовалась компания из тех, кто не хочет смотреть трансляцию в одиночку, то решили позвать в гости наших друзей — iOS-разработчиков из других компаний. Посмотреть мероприятие вместе, обсудить новинки (и то, как они повлияют на разработку приложений под iOS), поесть шаурму, выпить смузи, вот это всё.


Рассказываю под катом, как мы смотрели Apple Special Event, и что думают мои коллеги о новых устройствах и фичах компании из Купертино.


И что же?

RxSwift часть 1

Время на прочтение12 мин
Количество просмотров69K

ReactiveX logo


Доброго времени суток, хабровчане. В этом цикле статей, я бы хотел рассказать о реактивном программировании, а именно о фреймворке
RxSwift. На Хабре и в сети были статьи по RxSwift, но, на мой взгляд, они слишком трудны для начинающих. Поэтому, если вы начинаете постигать реактивное программирование в iOS, то прошу под кат.

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

Контроль над ресурсами. Настраиваем SwiftGen

Время на прочтение8 мин
Количество просмотров17K

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


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


Какое-то время назад нам удалось взять ресурсы приложения под контроль с помощью утилиты SwiftGen. О том, как ее настроить, как с ней жить и как эта утилита помогает переложить проверку актуальности ресурсов на плечи компилятора, и пойдет речь под катом.


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

Теория Universal Links

Время на прочтение5 мин
Количество просмотров61K
image

Введение


WWDC15 – Apple анонсирует переход на Universal Links. Их смысл непомерно прост – отправлять пользователя в приложение, если он переходит на страницу сайта, которую приложение поддерживает. Наиболее часто это применяется в письмах, которые отправляются после регистрации для подтверждения электронной почты. Таким образом, Universal Links избавляет пользователя от необходимости самостоятельно возвращаться в приложение – а это хорошо как для пользовательского опыта, так и для статистики.
Читать дальше →

Компонентная архитектура UI в iOS-приложении

Время на прочтение10 мин
Количество просмотров13K


Привет, Хабр!

Меня зовут Валера, и уже два года я разрабатываю iOS-приложение в составе команды Badoo. Один из наших приоритетов — легкосопровождаемый код. Из-за большого количества новых фич, еженедельно попадающих к нам в руки, нам нужно в первую очередь думать об архитектуре приложения, иначе будет крайне сложно добавить новую фичу в продукт, не ломая уже существующие. Очевидно, что это также относится и к реализации пользовательского интерфейса (UI) независимо от того, делается это с помощью кода, Xcode (XIB) или смешанного подхода. В этой статье я опишу некоторые методики реализации UI, которые позволяют нам упрощать разработку пользовательского интерфейса, делая её гибкой и удобной для тестирования. Также есть версия этой статьи на английском.

Прежде чем начать…


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

Оно состоит из трёх частей:

  1. Компоненты — кастомные UI-компоненты, то есть код, относящийся только к пользовательскому интерфейсу.
  2. Демоприложение — демонстрационные view models и другие сущности пользовательского интерфейса, имеющие только UI-зависимости.
  3. Реальное приложение — view models и другие сущности, которые могут содержать специфические зависимости и логику.

Почему такое разделение? На этот вопрос я отвечу ниже, а пока ознакомьтесь с пользовательским интерфейсом нашего приложения:
Читать дальше →

Что нового в AppCode 2018.2

Время на прочтение2 мин
Количество просмотров3.5K
В этом выпуске: больше новых рефакторингов, лучше автодополнение, поддержка баз данных из DataGrip и даже поддержка Touch Bar. Более подробно — под катом.

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

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

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


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

Что почитать по Swift на русском языке?

Время на прочтение4 мин
Количество просмотров54K
Среди новичков бытует мнение, что популярность языка программирования можно определить по количеству выпущенных книг. В качестве примера можно упомянуть Java или Python – и отчасти это будет правдой. Но есть языки, которые в бумажных книгах не особо-то и нуждаются. Просто из-за своей молодости и того факта, что официальный tutorial отвечает абсолютно на все вопросы начинающего программиста.

image

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

Поэтому автор блога GeekBrains Илья Бубнов вдоль и поперёк изучил российские издательства, чтобы отыскать 5 самых популярных книг по Swift, выпущенных в олдскульном формате.
Читать дальше →

3DTouch – Весы на iPhone: Завершение

Время на прочтение5 мин
Количество просмотров5.4K
В прошлой статье мы разобрали работу с 3DTouch на iPhone. Теперь осталось завершить пару штрихов и закончить наше приложение.

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

Как проверить гипотезы и заработать на Swift с помощью сплит-тестов

Время на прочтение9 мин
Количество просмотров10K

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

Фреймворк, о котором пойдет речь в этой статье, был написан с двумя целями. Во-первых, чтобы избежать возможных ошибок, ведь лучше отсутствие данных в системе аналитики, чем данные некорректные (или вообще данные, которые можно неверно интерпретировать и наломать дров). Во-вторых, чтобы упростить внедрение каждого последующего теста. Но начнём, пожалуй, с того, что представляют из себя сплит-тесты.
Читать дальше →

3DTouch – Весы на iPhone: Начало

Время на прочтение6 мин
Количество просмотров211K
После выхода на рынок iPhone 6s и iPhone 6s Plus с экранами, которые поддерживают технологию 3D Touch, в App Store практически сразу появилось приложение для взвешивая слив и персиков.

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

iOS 12: группировка уведомлений

Время на прочтение3 мин
Количество просмотров9.7K

Эта статья, как и предыдущая, посвящена изменениям в Notifications, которые появились в iOS 12.



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

Подробности под катом

Ближайшие события

Digest MBLT DEV — свежак для iOS-разработчиков

Время на прочтение2 мин
Количество просмотров1.7K


Вот оно какое наше лето. Треть мы потеряли уже где-то. Что же делать? Дай мне, друг, совета. Отдыхайте с огоньком. Ля, ля, ля, ля, ля, ля. Ля, ля, ля, ля, ля, ля.

В Джире на доске как на опушке, тасков так, что не видать макушку, горы эстимейтов, плачь в подушку. Голова идёт кругом. Ля, ля, ля, ля, ля, ля. Ля, ля, ля, ля, ля, ля.
Интро к 176-му выпуску Digest MBLT DEV от Саши Чёрного прекрасно, как и сам дайджест, который вместе с Сашей каждую пятницу готовят Руслан Гуменный, Александр Зимин и Иван Козлов.

Если вы ещё не читаете наш iOS-дайджест, то мы искренне не понимаем, почему. Пора это исправить.
Читать дальше →

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

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

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

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

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

iOS 12: новинки в уведомлениях

Время на прочтение7 мин
Количество просмотров15K

Конференция WWDC прошла, а докладов, которые стоит посмотреть, осталось ещё очень много. Были ключевые темы, которым Apple уделила особое внимание. Core ML, Siri Shortcuts и, конечно же, изменения в Notifications.



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

Подробности под катом

Организация навигации в iOS-приложениях с помощью Root Controller

Время на прочтение9 мин
Количество просмотров13K


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

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

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

Время на прочтение7 мин
Количество просмотров9.2K


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

Пишем UI Snapchat'а на Swift'е

Время на прочтение14 мин
Количество просмотров7.1K

Пролог


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


Слева — пример Снепчата, справа — пример приложения, созданием которого мы займемся.


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