Pull to refresh
17
0
Кирилл @ws233

Руководитель мобильной разработки

Send message

Почему NSURLSession лучше, чем NSURLConnection

Reading time10 min
Views40K


iOS 7 официально вышла в сентябре, тогда Apple предоставила разработчикам новый способ работы с сетью — NSURLSession. Это достаточно фундаментальная вещь, потому в случае необходимости поддержки iOS 6 и ниже, распараллеливать код относительно версии системы будет крайне проблематично. Но тем не менее, время идет, и уже сейчас по разным данным от 75 до 85 процентов пользователей перешло на последнюю iOS, потому я бы советовал попробовать NSURLSession уже в следующем проекте.

По замыслу Apple, NSURLSession должна сменить NSURLConnection, и тут действительно возникает вопрос: «а зачем все это надо?» Потому сразу плюсы по сравнению с NSURLConnection:
  1. Загрузка и отправка данных в бэкграунде
  2. Возможность останавливать и продолжать загрузку
  3. Мы можем использовать блоки и делегаты одновременно, так, например, блоки используем для получения данных и обработки ошибок, а делегатный метод — для прохождения аутентификации
  4. У сессии есть специальный конфигурационный контейнер, в который можно уложить все нужные свойства для всех тасков(запросов) в сессии, а также, например, хэдеры для всех запросов в сессии
  5. Можно использовать приватное хранилище для куков, кэша и прочего
  6. Получаем более строгий и структурированный код, в отличие от набора беспорядочных NSURLConnection

Подробности и примеры
Total votes 30: ↑28 and ↓2+26
Comments4

Синглтон (Перевод с английского главы «Singleton» из книги «Pro Objective-C Design Patterns for iOS» Carlo Chung)

Reading time11 min
Views28K
В математике и логике синглтон определяется как «множество, содержащее ровно один элемент». Поэтому неважно, насколько велика сумка, каждый раз при попытке достать из неё шарик будем получать один и тот же. В каких ситуациях нужен синглтон в программировании? Подумайте о ресурсах, которые невозможно скопировать, но можно использовать совместно. Например, на iPhone установлен единственный модуль GPS и определять текущие координаты умеет только он. Класс CLLocationManager из фреймворка CoreLocation предоставляет единственную точку входа ко всем сервисам GPS-модуля. Кто-нибудь может подумать: если можно сделать копию CLLocationManager, можно ли получить дополнительный набор GPS-сервисов для своего приложения? Это звучит, как фантастика – вы создали два программных GPS по цене одного аппаратного. Но в реальности вы все равно получаете только один GPS единовременно, так как в iPhone есть только один GPS, который создает настоящие соединения со спутниками. Так что, если вы думаете, что создали супер-приложение, которое может манипулировать двумя отдельными GPS-соединениями одновременно, и хотите похвастаться этим перед друзьями, подумайте дважды.

Класс синглтона в объектно-ориентированном приложении всегда возвращает один и тот же экземпляр самого себя. Он обеспечивает глобальную точку доступа для ресурсов, которые предоставляет объект класса. Паттерн с такой функциональностью называется Синглтон.
В этой главе мы изучим возможности реализации и использования паттерна Синглтон в Objective-C и фреймворке Cocoa Touch на iOS.
Читать дальше →
Total votes 31: ↑22 and ↓9+13
Comments10

Lock-free структуры данных. 1 — Начало

Reading time12 min
Views148K

Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.

Читать дальше →
Total votes 165: ↑161 and ↓4+157
Comments39

Мониторинг файлов с помощью GCD

Reading time4 min
Views5.7K
Думаю, что большинству разработчиков под iOS известно как легко включить iTunes File Sharing в своем приложении, добавив лишь одну строчку в Info.plist:
UIFileSharingEnabled = YES
Но это даже не полдела. Соль в том, что, по-хорошему, приложение теперь должно остлеживать все изменения с файлами, происходящие в директории Documents и соответственно обновлять свои данные. Как это релизовать в своём коде и расскажет данная статья.
image
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments2

Правильная аналитика в мобильном приложении

Reading time6 min
Views65K
Подавляющее большинство мобильных приложений выходит в свет без интегрированных фреймворков аналитики и без правильной их настройки. Это очень печально, приложение не веб-сайт, где можно воткнуть Google Analytics за 10 минут и собирать статистику.

Я вижу четыре причины для того чтобы задуматься над аналитикой в мобильном приложении ДО его выхода:
  • С первого раза никогда не получается сделать успешное мобильное приложение. После выпуска требуется анализ поведения настоящих пользователей в «бою».
  • Оценка эффективности рекламных кампаний невозможна без аналитики.
  • Две недели занимает выкладка iOs приложения, когда вы спохватитесь придется ждать аналитику около месяца.
  • Данные из прошлого не вернуть.

Под катом набор инструментов для аналитики и рекомендации по их настройке принятые в Touch Instinct и ценные комментарии от LinguaLeo и агентства мобильной рекламы Mobio.


Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments28

Humble Origin Bundle — распродажа 8 эпических игр от EA

Reading time1 min
Views94K


Встречайте новый, без сомнений самый щедрый Humble Bundle — Origin (или Humble Indie Bundle 8).

Сами по себе все эти игры будут стоить около $ 215, но нам дают возможность назвать свою цену!

Начиная с 1 $, вы можно приобрести 6 игр:
  • Dead Space 3
  • Crysis 2 Maximum Edition
  • Burnout Paradise: The Ultimate Box
  • Medal of Honor
  • Mirror's Edge
  • Dead Space

Заплатите больше, чем в среднем (4,6$ на данный момент), и вы получите еще 2:
  • Battlefield 3
  • The Sims 3 (плюс 2 DLC из The Sims 3 Starter Pack)

Примечание:
Все игры привязываются к клиенту Origin, и 5 из 8 к Steam. Windows-only, кроме The Sims 3, которая так же доступна на Mac.
Читать дальше →
Total votes 84: ↑73 and ↓11+62
Comments139

mogenerator для Core Data, о котором нужно знать

Reading time5 min
Views11K


Относительно недавно я узнал о mogenerator — замечательном приложении командной строки для генерации классов на основании объектного графа Core Data. И вот что, если вы о нем ещё не знаете, то обязательно стоит с ним познакомиться, использование этого приложения значительно упрощает изменение объектного графа Core Data. mogenerator генерирует по два класса на сущность, один для машинного использования, другой для обеспечения возможности добавления дополнительного функционала. Корректно настроив проект в XCode возможно производить эту генерацию автоматически перед сборкой.
В этой статье я опишу как можно использовать mogenerator с XCode 4 и некоторые полезные мелочи.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments3

Книги для тимлидов и руководителей проектов

Reading time2 min
Views171K
Какими свойствами должен обладать хороший тимлид? Он, несомненно, должен быть технарем, иметь разносторонний опыт, уметь налаживать диалог внутри команды и с начальством, вести дискуссии и принимать решения, брать на себя ответственность, понимать бизнес-процессы, думать как заказчик и владелец бизнеса. Ну и быть немного психологом.

В отечественном IT я часто наблюдаю следующую картину: тимлидом часто становился лучший (?) разработчик из команды (aka 23-летний сеньор). А чтобы стать руководителем проекта (project manager) иногда достаточно просто знать английский и «павэрпойнт» на уровне пользователя. Это реалии отечественного аутсорсинга и с этим нужно как-то жить.

В итоге часто получается как-то так:
Потому что на десять сеньоров по статистике девять тупят.
Читать дальше →
Total votes 84: ↑74 and ↓10+64
Comments53

Сетевое кеширование в iOS. NSURLCache

Reading time5 min
Views21K
Данная тема важна при разработке любого приложения, взаимодействующего с сетью. Здесь грамотное использование возможностей системы может значительно улучшить взаимодействие пользователя с программой.

NSURLCache — это комплексное решение для кеширования сетевых запросов в оперативной памяти или на диске. В соответствии с документацией Apple, любой запрос с использованием NSURLConnection будет «пропущен» через NSURLCache.

Кеширование уменьшает количество необходимых обращений к сети, улучшает впечатление от работы с программой во время полного отсутствия интернета или проблем с сетевым соединением.
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments3

Детектирование и локализация произвольного текста на изображениях, полученных с помощью фотокамер мобильных телефонов

Reading time3 min
Views25K
Я иногда путешествую по разным странам, и языковой барьер, довольно часто, становится серьезным препятствием для меня. И если в странах, где используются языки германской группы, я еще как то могу сориентироваться, то в таких странах как Китай, Израиль и арабские страны без сопровождающего, путешествие превращается в загадочный квест. Невозможно понять местное расписание автобусов/поездов/электричек, названия улиц в небольших городах очень редко есть на английском языке. А уж проблема с выбором, что бы поесть, из меню на непонятном языке вообще сродни ходьбы по минному полю.
Так как я разработчик под iOS, я подумал, а почему бы не написать такое приложение: наводишь камеру на вывеску/расписание/меню и тут же получаешь перевод на русский.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments41

Что такое ASO и почему оно крайне необходимо сегодняшним разработчикам

Reading time5 min
Views49K
Это первая статья из серии материалов, которые я планирую посвятить продвижению мобильных приложений с помощью ASO и локализации. Поэтому, в первую очередь, хотелось бы объяснить, что же такое это ASO, из каких компонентов оно состоит, с чем оно неотъемлемо связано и почему так необходимо. В дальнейшем, я, на основе своего опыта (и, соответственно, опыта компании, в которой я работаю), с удовольствием расскажу, как пользоваться этими инструментами наиболее эффективно, каких результатов ждать в долгосрочной и краткосрочной перспективе, приведу алгоритм асо действий и поделюсь полезными ресурсами, которые помогают сократить время на ASO деятельность.
Но начнем с основ. Каждый разработчик мобильных приложений хочет, чтобы его продукт был успешным. Успешность можно измерять по-разному (количество скачиваний и активных пользователей, оценки и отзывы пользователей, и т.д.), но мы же с вами понимаем, что одним из важнейших показателей успешности является окупаемость, а затем и прибыльность всего дела. Итак, что говорят нам цифры: в 2012 году мировой рынок мобильных приложений составил приблизительно 7,83 млрд долл. Российский же сегмент рынка мобильных приложений по разным оценкам в 2012 году достиг 120-160 млн долларов, и продолжил рост в первом квартале 2013 на 11%. Есть в этих замечательных цифрах как хорошая новость, так и плохая. Хорошо, что русскоязычный рынок растет. Это значит, что нам с вами есть, где развернуться, есть активная аудитория, готовая скачивать приложения и пользоваться ими. Благодаря этой аудитории мы можем совершенствовать свои продукты и делать их максимально прекрасными. А вторая новость заключается в том, что нам с вами, чтобы быть действительно успешными и много зарабатывать, нужно выходить из зоны русскоязычного комфорта и осваивать интернациональные рынки. И это совсем не плохо. Это интересно, это, как говорят наши англоязычные друзья, challenging.
Читать дальше →
Total votes 11: ↑6 and ↓5+1
Comments10

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity