Все потоки
Поиск
Написать публикацию
Обновить
22.1

Swift *

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

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

100 выпуск Digest MBLTdev — свежак для iOS-разработчиков

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


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

SwiftLint — чистота и порядок в iOS проекте

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

Думаю, все знают, как бывает непросто поддерживать соблюдение code style и соглашений в iOS-проекте. Сегодня поговорим о том, как автоматизировать этот процесс с помощью утилиты SwiftLint.
Читать дальше →

iOS: работа с галереей (Photos framework)

Время на прочтение3 мин
Количество просмотров17K
Привет, Хабр! В данной статье решил написать о том, как работать с галереей с помощью фреймворка Photos. В этой статье рассмотрим базовые возможности фреймворка: создание альбома, сохранение, удаление и загрузку фото. Если будут положительные отзывы, то в следующих частях напишу про работу с live фото, видео, наложение фильтров, кэш и прочие функции.
Читать дальше →

Насколько удобным может быть API для рисования в iOS?

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

Здравствуйте, меня зовут Виктор, я работаю в компании Exyte. Недавно мы выложили в open source нашу внутреннюю разработку — библиотеку для работы с векторной графикой и ее анимации Macaw. Я хочу поделиться впечатлениями от применения ее в реальном проекте и рассказать о ее преимуществах над нативным API.


Как разработчикам, нам часто приходится создавать нестандартные контролы и повторять одни и те же рутинные действия даже для простых эффектов:


  • Отнаследоваться от UIView, чтобы переопределить drawRect
  • Описать "сцену" используя устаревший Core Graphics API

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


ControlImage


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

Тап жест для скрытия клавиатуры в iOS (Swift 3)

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

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



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

AppCode 2016.3: поддержка Swift 3, новые настройки форматирования, улучшения быстродействия и многое другое

Время на прочтение3 мин
Количество просмотров8.1K
Привет, Хабр!

Совсем недавно вышел AppCode 2016.3, и в этом посте мы расскажем о самых интересных изменениях в нем.


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

Мобильный банк для iOS: добавляем блочную архитектуру к Cocoa MVC

Время на прочтение7 мин
Количество просмотров5.2K
Если вы пишете приложение мобильного банка для iOS, какие у вас приоритеты? Думаю, их два:

  1. Надёжность;
  2. Скорость внесения изменений.

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

Секреты удачного апдейта: интерфейс, backend, структура приложения

Время на прочтение8 мин
Количество просмотров2.8K
Приближаются долгожданные новогодние праздники – время путешествий. В связи с этим сегодня мы хотели бы рассказать о работе над нашим совместным проектом с компанией Travel And Play — Webcam World View. Приложение дает возможность подключаться к стримам с видеокамер, установленных в разных уголках планеты, и наблюдать за кипящей там жизнью в реальном времени.

Здорово, правда? Нам тоже так казалось, пока нынешней осенью не была поставлена задача на новую, улучшенную версию продукта. Что именно улучшать — оставалось на наше усмотрение, поэтому функционал мы сразу решили оставить в покое: он был вполне достаточным и при этом не перегруженным. А вот UX составляющая и техническое исполнение подверглись существенному пересмотру. О том, как мы делали из изначально неплохого приложения конфетку, читайте ниже.


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

Внедрение NSTouchBar на Swift

Время на прочтение5 мин
Количество просмотров4.1K
Недавно Apple представила миру новую линейку MacBook Pro. И одной из особенностей свежей версии стало то, что верхний ряд системных кнопок в ней удален – вернее, заменен на мультитач экран. Разработчикам это нововведение должно быть интересно в первую очередь, ведь на панели выделена область, которую можно использовать в собственных приложениях. Компания Apple даже предоставила API для ее использования. В этой статье мы расскажем и покажем, как можно применить возможности NSTouchBar. А дальше их можно использовать и для работы над чем-то существенным, что и было сделано в апдейте MaCleaner у наших коллег.


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

Разгоняем сборку Swift проекта в Xcode

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

image
Статья о том как починить инкрементальную компиляцию в Xcode для Swift проектов и ускорить build phases для Cocoapods и Carthage, ничего не поломав.


Небольшой спойлер: на трех разных проектах получилось сократить время инкрементальной сборки в 9 раз!


Туториал несет сугубо практический характер с минимумом воды. Обязательно к прочтению для действующих iOS разработчиков.


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

Использование паттерна SchedulableObject для выделения бизнес-логики в отдельный поток

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


Интерфейс мобильного приложения — это лицо продукта. Чем более отзывчив интерфейс, тем больше радости приносит продукт. Однако удовлетворённость от использования приложения зависит прежде всего от объёма его функций. По мере увеличения количества и сложности задач они требуют всё больше и больше времени. Если архитектура приложения предполагает, что все они выполняются в главном потоке, то задачи бизнес-логики начинают конкурировать за время с задачами отрисовки интерфейса. При таком подходе рано или поздно обязательно находится сценарий, исполнение которого приводит к залипанию приложения. Для борьбы с этой напастью существует три принципиально разных подхода:

  1. Оптимизация алгоритмов и структур данных, вовлечённых в исполнение проблемного сценария.
  2. Вынос проблемного сценария из главного потока.
  3. Вынос из главного потока всех функций приложения, за исключением собственно рендеринга пользовательского интерфейса.

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

Объясняем бабушке, как написать свой язык программирования

Время на прочтение4 мин
Количество просмотров33K
Это игровая площадка, где я попытаюсь объяснить, как создать малюсенький язык программирования (Mu). Можно посмотреть вживую на открытые исходники здесь или скачать тут. Туториал можете прочитать прямо сейчас.

image

Пишем свой язык программирования (на Swift)


Для того, чтобы написать свой язык программирования, необязательно иметь степень в Computer Science, достаточно понимать 3 базовых шага.

Язык: Mu(μ)


Mu — это минимальный язык, который содержит постфиксный оператор, бинарную операцию и «одноциферные» числа.

Пример: (s 2 4) or (s (s 4 5) 4) or (s (s 4 5) (s 3 2))…

Тюнинг Swift компилятора. Часть 2

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

image


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


Ссылка на первую часть для тех, кто пропустил.


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

Тюнинг Swift компилятора. Часть 1

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

image


Обзор Swift 3 компилятора и способы его ускорить. Часть 1.
Развенчание существующих мифов. Мнение о проблемах autocompletion в Xcode.


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

Vapor — быстрый и безопасный REST на Swift?

Время на прочтение3 мин
Количество просмотров27K
Я как iOS разработчик всегда хотел получить возможность окунуться в мир бэкенда, не прибегая к изучению других языков. Теперь благодаря Vapor мои мечты сбылись и каждый желающий имеет возможность использовать один язык на сервере и клиенте.

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

Переходим на Swift 3 с помощью миграционного «робота» в Xcode 8.1 и 8.2

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


Уже известно, что Xcode 8.2 будет последним релизом, который поддерживает переходную версию Swift 2.3. Поэтому нужно срочно подумать о миграции на Swift 3.

Я хочу поделиться некоторым опытом такой миграции на примере приложений, связанных со стэнфордским курсом «Developing iOS 9 Apps with Swift», как демонстрационных (их 12), так и полученных в результате выполнения Заданий этого обучающего курса (их 6 с вариантами). Они все разной сложности, но там есть и рисование, и многопоточность, и показ изображений с помощью ScrollView, и работа с сервером Twitter, и база данных Core Data, и работа с облачным сервисом Cloud Kit, и карты Map Kit. И все это было написано на Swift 2.2 (stanford.edu), а мне было необходимо перевести все приложения на Swift 3. Конспект лекций стэнфордского курса на русском языке можно найти на сайте «О стэнфордских лекциях», а код — для Swift 2.3 на Github и для Swift 3 на Github.
Читать дальше →

Программирование состояний в UIControl

Время на прочтение4 мин
Количество просмотров12K
Основная проблема, с которой сталкивается программист при реализации какого-то управляющего элемента — выстраивание правильной логики работы этого элемента.
Читать дальше →

Анонс CocoaHeads Meetup 2 декабря

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


В первую пятницу декабря состоится регулярная встреча iOS-разработчиков CocoaHeads Moscow. В этот раз мы соберемся в офисе компании Rambler&Co. В программе встречи три доклада на очень разные темы — как про общие архитектурные подходы к iOS приложениям, так и про процессы разработки и получения фидбэка от пользователей при запуске нового функционала.

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

Swift String Validating или простая валидация строк на соответсвие критериям

Время на прочтение3 мин
Количество просмотров8.8K
Всем доброго времени суток. Сегодня хочется поговорить про проблему валидации строк в IOS проектах. Думаю Вы как и я часто с этим сталкиваетесь, когда надо проверить, например, поле пароля на соответствие нескольким критериям.

Например:

— Длина пароля больше 6 символов
— Минимум одна цифра
— Буквы верхнего и нижнего регистра

Зачастую такое требование реализовываются примерно так:

    func isPasswordCorrect(_ value:String) -> Bool {
        // code for check length, number exist, uppercase and lowercase chars
    }

Просто. Функция работает, пароль проверяется. Все довольны.

Дальше если нам надо проверить поле email на корректность, мы также пишем функцию, например:

    func isEmailCorrect(_ value:String) -> Bool {
        // code for check length, number exist, uppercase and lowercase chars
    }

И так далее.

По росту проекта функций с такими проверками становится все больше и больше. При создании нового проекта нам надо или начинать все сначала или копировать эти функции с прошлого проекта. Не очень удобно. Один из вариантов решения под катом.
Читать дальше →

Гедоммист и ближайшие соседи

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

Гедоммист (в Древнем Риме) — человек, получающий кайф от программирования.

Увлечению программированием сопутствуют опасности — антисанитария, забытые дети, служебные выговоры, сбежавшее молоко или летящий в висок женский сапог.

Помню об этом, одолевая манящие сложностью алгоритмы.

И хочу рассказать об одной бесполезной задаче, которую я решал неделю в полном экстазе. Задача родилась благодаря 3aicheg, чей комментарий дал мне идею для игры под iOS (вижу Ваши глаза, Шо опять?). Смысл в том, чтобы сделать match game на нерегулярной сетке с гравитацией.

Кстати, если вы думаете, что рассказывая здесь о своем бесплатном приложении, можно получить мировую славу и купить яхту, то вот таблица
Рейтинг статьи Просмотров статьи Просмотров видео Загрузок
+30 20 000 5 000 18
-2 2 500 2 000 14

И потому я восхищаюсь бескорыстными авторами Хабра (особенно теми, кто владеет русским слогом). Теперь к делу! А дело такое…
Читать дальше →