Метка «objective-c» - 2

Игра в прятки: кодогенерация против JSON Страшно подумать, но ещё каких-то десять лет назад разработка системы самого заштатного RPC была целым праздником в жизни разработчика. Болезненным и длительным праздником, как свадьба для лошади: голова в цветах, зад в мыле. Это было страшно увлекательно и одновременно невероятно запарно. Один выбор протокола чего стоил. Я уж не говорю о борьбе с могучими и чудовищными фреймворками, типа DCOM или CORBA. Реализация транспортного уровня вообще была уделом людей с длинными бородами.

В наше счастливое время жизнь программиста под iOS должна быть легка и приятна. Транспорт давно перестал быть проблемой. А RPC? Легко: достаём из кобуры Apache Thrift или на худой конец Google Protocol Buffers и пожалуйста, с минимальным напряжением головного мозга готов и протокол, и сервер, и клиент. Подавляющему количеству приложений в AppStore только это и нужно: простой и понятный интерфейс к удаленным процедурам, желательно в приятных обертках из нативных классов, и такая же простая и понятная обработка ошибок. Всё.

Но. К сожалению, и Thrift, и Protobuf заточены под одновременную разработку клиента и сервера. А такая удача случается в карьере программиста не часто. Читать полностью »

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

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

Именно поэтому мы решили сделать общедоступной часть волшебства, стоящей за GitHub for Mac: ReactiveCocoa (RAC). RAC — это framework для компановки и преобразования последовательностей значений.
Читать полностью »

Продолжаем выкладывать видео с одиннадцатой встречи Apple Developers Community, которую 27 февраля провели компании e-Legion и Jetbrains.

Следующий докладчик Алексей storoj Сторожев, разработчик e-Legion. Цель доклада — вдохновить разработчиков на более глубокое изучение возможностей Objective-C Runtime, показать способы исследования системы, воодушевить аудиторию на эксперименты.


Презентация

В докладе показаны несколько примеров использования Objective-C Runtime для решения нетипичных задач.
Читать полностью »

Используем вебсокеты в своем iOS приложенииДобрый день, уважаемые читатели!

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

Этот подход может пригодиться для:

  • Реализации чата в мобильном клиенте под iOS
  • Использовании информации чата для обучения нейронных сетей

Заинтересовавшихся прошу под кат!
Читать полностью »

Tradeous: Наконец то в App Store!

Добрый день, уважаемые читатели!

Прошло почти полгода с окончания одного из первых моих онлайн-хакатонов, на котором я написал приложение-клиент для Btc-e.com за 24 часа. И только недавно Tradeous добрался до яблочного магазина! Чего только не случилось за эти 6 месяцев: бесконечные диспуты с Apple Review Team; несколько раз эта самая Review Team менялась; попытки поднять собственный бекенд-прокси для биржи; переписывание движка чата с нуля на новых технологиях; да, в конце концов, параллельно наша студия запустила еще 6 приложений, а Tradeous все не принимали и не принимали.

Отказ шел за отказом, я раз двадцать созванивался с проверяющими, уверял их, что мы не нарушаем никаких законов. И, все-таки, мы победили! Tradeous доступен для загрузки на русском и английском языках. Огромное спасибо mewz и aler за поддержку и помощь с дизайном!

Так в чем же дело? Почему процесс публикации занял так много времени? Что было не так с чатом? Почему менялись Review Team? Заинтересовавшихся прошу под кат.

Disclaimer: Модераторы, пожалуйста, перенесите топик в хаб «Я пиарюсь» — у меня сами-знаете-чего не хватает для этого действия.
Читать полностью »

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

Читать полностью »

The dream

UICollectionView — класс UIKit, появившийся в iOS 6. Строго говоря, это класс, позволяющий показывать на экране коллекцию айтемов. Структура коллекции — абсолютно произвольная, но обычно UICollectionView используется для всяких сетко-подобных контролов с ячейками, хедерами и футерами. Понимая, насколько абстрактен данный класс, разработчики Apple создали мощный механизм для создания любых лейаутов. По большому счету, даже UITableView это конкретная реализация UICollectionView. Возможности данного класса, в каком-то смысле, фантастические. Но в данной статье речь пойдет не об этом.

Ахиллесова пята разработчиков Apple — постоянное стремление делать СДК, которое будет работать «автомагически». Просто сделайте то-то и то-то, и класс «will do the right thing». К сожалению это работает далеко не всегда. И UICollectionView — яркий пример. Начиная с релиза в iOS 6 и по сегодняшний день (iOS 7.0.4) класс содержит довольно большое количество багов, с которыми очень трудно и неприятно иметь дело. Приходится угадывать, что же происходит «под капотом», и методом тыка заставлять UICollectionView работать как надо. Количество приобретенных костылей уже достигло таких размеров, что я решил поделиться известными багами и найденными решениями.

Кому интересно — милости просим под кат.
Читать полностью »

Здравствуйте, читатели!

Предыстория

После выхода iOS 7 некоторые пользователи начали жаловаться на проблемы с приложением Телефон. Суть проблемы в том, что при наборе номера в международном формате +375 (код) xxx-xx-xx не удается набрать '+'. Если удерживать '0', то вместо плюса получаем комбинацию из трех пальцев '0+'. Проблема скорее всего локальна, так как кроме пользователей из Беларуси больше никто свое недовольство не высказывал.

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

  1. использовать 8 при наборе номера
  2. использовать 00
  3. удерживая '0', нажать кнопку удалить до появления плюса

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

И тогда я решил исправить это маленькое недоразумение с помощью твика.
Читать полностью »

Objective-C, по-моему мнение, — не очень удобный язык со множеством проблем. Но мы вынуждены писать приложения под iOS на этом языке. Я разработал другой язык, который генерирует код Objective-C. Поэтому в этом языке вы можете легко использовать классы Objective-C и C функции. Вы также легко можете использовать сгенерированные классы в коде Objective-C. Так что есть возможность вести разработку сразу на двух языках. Я назвал этот язык Objective-D.
Читать полностью »

Автоматический подсчет ссылок (Automatic Reference Counting, ARC) для языка Objective-C был представлен компанией Apple еще в 2011 году для iOS 4.0 и выше, Mac OS X 10.6 и выше, с использованием xCode 4.2 и выше. И, хотя всё больше библиотек, фреймворков и проектов сегодня используют ARC, до сих пор среди программистов встречается либо неприятие этой технологии, либо eё неполное понимание. Опытные программисты, привыкшие к retain/release, иногда считают, что они лучше и эффективней справяться с подсчетом ссылок, чем это за них сделает компилятор, а новички, начищающие сразу использовать ARC, полагают, что им не надо вообще думать об управлении памятью, и всё сделается магическим образом само.
Читать полностью »