Swift — значит быстрый. Быстрый — значит понятный, простой. Но достичь простоты и понятности непросто: сейчас в Swift скорость компиляции так себе, да и некоторые моменты языка вызывают вопросы. Тем не менее возможность перечислений (enum'ов), про которую я расскажу (associated values — присоединяемые значения) — одна из самых крутых. Она позволяет сократить код, сделать его понятнее и надёжнее.
Рубрика «swift» - 41
Enums + Associated Values = Swift
2016-11-02 в 10:30, admin, рубрики: enum, ios development, mobile development, redmadrobot, swift, swift 3, Блог компании REDMADROBOT, разработка мобильных приложений, разработка под iOSПарсинг JSON — это минное поле
2016-10-31 в 18:45, admin, рубрики: json, php, python, swift, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, стандартыJSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.
2. Тестирование парсинга
2.1. Структура
2.2. Числа (Numbers)
2.3. Массивы
2.4. Объекты
2.5. Строки
2.6. Двойственные значения RFC 7159
3. Архитектура тестирования
4. Результаты тестирования
4.1. Полные результаты
4.2. C-парсеры
4.3. Objective-C-парсеры
4.4. Apple (NS)JSONSerialization
4.5. Freddy (Swift)
4.6. Bash JSON.sh
4.7. Другие парсеры
4.8. JSON Checker
4.9. Регулярные выражения
5. Контент парсинга
6. STJSON
7. Заключение
8. Приложение
Macaw
2016-10-26 в 12:21, admin, рубрики: Cocoa, iOS, open source, swift, разработка мобильных приложений, разработка под iOSПривет! Современные интерфейсы мобильных приложений содержат тонны иллюстраций и анимаций, начиная от хитрых градиентов и заканчивая диаграммами акций. Поэтому мобильным разработчикам приходится тратить огромное количество времени, чтобы превратить красивый дизайн в функциональное приложение, которое, к тому же, будет работать на устройствах различных размеров.
Именно с этой проблемой мы столкнулись во время разработки iOS приложений. Чтобы упростить задачу, мы разработали графическую библиотеку Macaw, которая позволяет описывать сложные интерфейсы в виде понятных объектов сцены и даже напрямую отображать SVG графику с поддержкой событий и анимации.
Интересно? В этой статье мы познакомим вас с базовыми понятиями Macaw и вместе создадим диаграмму с анимацией, используя минимум кода.

Macaw — удобная библиотека для векторной графики в Cocoa
2016-10-26 в 12:21, admin, рубрики: Cocoa, iOS, open source, swift, разработка мобильных приложений, разработка под iOSПривет! Современные интерфейсы мобильных приложений содержат тонны иллюстраций и анимаций, начиная от хитрых градиентов и заканчивая диаграммами акций. Поэтому мобильным разработчикам приходится тратить огромное количество времени, чтобы превратить красивый дизайн в функциональное приложение, которое, к тому же, будет работать на устройствах различных размеров.
Именно с этой проблемой мы столкнулись во время разработки iOS приложений. Чтобы упростить задачу, мы разработали графическую библиотеку Macaw, которая позволяет описывать сложные интерфейсы в виде понятных объектов сцены и даже напрямую отображать SVG графику с поддержкой событий и анимации.
Интересно? В этой статье мы познакомим вас с базовыми понятиями Macaw и вместе создадим диаграмму с анимацией, используя минимум кода.

Почему нам нужен Delegate в iOS и WatchOS?
2016-10-21 в 6:49, admin, рубрики: iOS, mvc, swift, watchos, xcode, переводОколо двух лет назад кто-то задал мне хороший вопрос: «Почему нам нужны делегаты для UIViewControllers?» Он думал, что Swift многое облегчил, но вся эта штука с делегатами кажется очень сложной. Почему просто нельзя посылать сообщения или инициализации между классами?
Когда я впервые изучал iOS, я признал, что у меня ушли месяцы, чтобы понять, что произошло с делегацией. Я нашел много непонятного кода и немного объяснений. Когда я работал над этим, результата было мало. В большинстве случаев туториалы ссылались на информацию о том, как использовать стандартный делегат Apple, но не показывали, как создавать свой отклик. Эти отклики необходимы для полного понимания делегатов.
Я решил, что время обновить статью и включить два примера с которыми разработчики могут столкнуться: iOS и watchOS версии. Вместе с взрослением watchOS в watchOS 3, я думаю, многие разработчики начнут смотреть в сторону разработки приложений для часов и там могут столкнуться с непонятными вещами.
Что такое Class?
Давайте начнем с начала, что бы все понимали проблему. До тех пор, пока мы используем классы в объектно-ориентированном программировании, стоит хорошо понимать, что они из себя представляют. Class — это коллекция данных, которые мы называем properties (свойства) и действий methods (методы) к properties.
Читать полностью »
Что нового в Swift 3?
2016-10-19 в 21:17, admin, рубрики: ios development, iOS разработка, objective-c, swift, swift 3, swiftlang, мобильная разработка, разработка мобильных приложений, разработка под iOS, разработка приложенийКак мы все давно знаем, Apple интегрировала Swift 3 в Xcode 8. Это первая версия языка с открытым исходным кодом, который работает как на macOS, так и на Linux. Если вы следили за процессом развития языка на Swift Evolution с декабря прошлого года и успели с ним поэкспериментировать в IBM sandbox, вы уже наверное поняли, что в нем появилось множество изменений. Совершенно уверен, что при компилировании существующего проекта в Xcode 8, ваш код удивит вас наличием ошибок. Но это поправимо. Давайте познакомимся с некоторыми изменениями в новой версий языка.
Читать полностью »
По итогам Rambler.iOS #8
2016-10-19 в 12:35, admin, рубрики: iOS, json, paw, rambler.ios, swift, tdd, unit-тесты, архитектура, конференция, разработка под iOSДве недели назад, 5 октября, состоялась восьмая встреча Rambler.iOS, которую мы предварительно анонсировали на Хабре. В этот раз основной акцент был сделан на контенте самой конференции — мы подготовили четыре крутых доклада, в том числе один от иностранного докладчика.
Xcode: наверное, лучший способ работы со сторибордами
2016-10-17 в 4:08, admin, рубрики: storyboard, swift, xcode, разработка под iOS
Этот пост является вольным переводом статьи Xcode: A Better Way to Deal with Storyboards by Stan Ostrovskiy
Некоторые примеры кода в оригинальной статье устарели (ввиду выхода Swift 3) и в переводе были изменены.
Советы и рекомендации по работе с Interface Builder.
Apple серьезно улучшили Interface Builder в новом Xcode 8. Использование size classes стало более интуитивным, возможность масштабирования сториборда — очень удобной, а полное превью прям в Interface Builder — просто великолепным. Для тех у кого были сомнения насчет использования Interface Builder, это может стать хорошими плюсами.
С другой стороны, у многих разработчиков все еще есть некоторые проблемы с Interface Builder когда они создают большие многоэкранные приложения со сложной навигацией.
В этой статье я поделюсь некоторыми из лучших практик для работы со сторибордами в вашем проекте. Вы уже пользуетесь Interface Builder, или только делаете первые шаги в этом направлении? — в любом случае, эти советы будут полезны для вас.
1. Если вы работаете в команде, используйте отдельный сториборд для каждого экрана. Даже если вы работаете один — это наверняка станет хорошей привычкой.
В вашем проекте есть один файл main.storyboard, который выглядит вот так?

С точки зрения дизайнера, все хорошо: полностью видно UI и навигацию. И это именно то, для чего Interface Builder и был создан.
Но для разработчика это несет множество проблем:Читать полностью »
Атаки на банкоматы: прошлое, настоящее и будущее
2016-10-03 в 16:34, admin, рубрики: atm, Carbanak, skimer, swift, tyupkin, xfs, банкоматы, Блог компании «Лаборатория Касперского», информационная безопасностьВ посте про интернет вещей я, практически с шашкой наголо, отнес к таковому и банкоматы — по критериям автономной работы и наличию постоянного подключения к интернету. В общем-то все так и есть, но если от слов перейти к делу — то есть к реальной специфике защиты банкоматов от взлома, то сразу же возникает множество неудобных деталей. Современный банкомат — это полноценный компьютер, заточенный под выполнение одной конкретной задачи, но пригодный к запуску любого кода, в том числе и вредоносного. Банкомат обвешен и контактирует с множеством датчиков и специализированных устройств, через которые банкомат можно взломать. А можно и не взламывать, перехватив управление устройством для выдачи наличных или клавиатурой для ввода PIN-кода.
Сценариев, когда с банкоматом может пойти что-то не так — множество, и большинство основаны далеко не на теоретическом анализе потенциальных уязвимостей, а на практике разбора реальных атак. Банковская сфера в целом гораздо более защищена, чем другие индустрии, но и внимания у киберпреступников к ней больше: на кону реальные деньги. Тем не менее, неплохо было бы как-то систематизировать слабые места банковской инфраструктуры, чем и занялись недавно специалисты «Лаборатории» Ольга Кочетова и Алексей Осипов.
Как и в случае с историей расследования кампании Lurk, данный текст представляет собой вольный пересказ первоисточников. За деталями отправляю к ним: это обзорная статья на Securelist на русском, исследование «Будущие сценарии атак на коммуникационные системы, взаимодействующие с банкоматами» на английском, краткая выжимка оттуда — только описание атак и методов противодействия, а также более ранние публикации: описание вредоносной программы Skimer и целевой атаки на банкоматы Tyupkin.
Читать полностью »
Управление зависимостями в iOS-приложения на Swift со спокойствием
2016-09-29 в 12:26, admin, рубрики: dependency injection, framework, iOS, library, swift, разработка под iOSВсем доброго времени суток. В наше нелегкое время постоянно приходится сталкиваться со стрессовыми ситуациями и написание программного кода тому не исключение. Все справляются со стрессом по разному: кто-то идет в бар, кто-то наоборот медитирует в тишине, но каждый человек хочет, чтобы этого стресса было как можно меньше, и старается избегать заведомо стрессовых ситуаций.
Начав писать на Swift, мне пришлось столкнуться с многими проблемами, и одна из них — отсутствие конкуренции у IoC контейнеров на этом языке. По сути их всего два: Typhoon и Swinject. Swinject имеет мало возможностей, а Typhoon написан для Obj-С, что является проблемой, и работать с ним для меня оказалось большим стрессом.
И тут Остапа понесло я решил написать свой IoC контейнер для Swift, что из этого получилось читать под катом:
Читать полностью »