Обновить
43.26

iOS *

Мобильная ОС компании Apple

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

Добавляем Pattern Matching и параметризованные методы в Objective-C

Время на прочтение8 мин
Охват и читатели2.2K
Все больше и больше статей на тему «добавь функциональные косты плюшки в свой любимый императивный язык программирования». Вот недавний пример для Java.

В Objective-C не так давно были добавлены блоки (blocks), с помощью которых реализованы замыкания. Но хочется чего-то большего. Например сопоставления с образом (Pattern Matching) и параметризованные методы.

Исключительно Just For Fun попробуем добавить их в язык без патчинга компилятора и танцев с препроцессором, только средствами самого языка.

Что из этого получилось?
Читать дальше →

Добавь мультфильм в «Ну, погоди!»

Время на прочтение1 мин
Охват и читатели1.6K
image
Всем кто так и не увидел мультика после 1000 очков, предоставляется второй шанс. Исходники приложения «Ну, погоди!» под iOS теперь доступны любому желающему на github.
Читать дальше →

Добавляем координаты в EXIF-тег в собственном приложении для iOS

Время на прочтение4 мин
Охват и читатели2.2K
Всем известно, что приложение «Фото», установленное на всех iOS-девайсах, позволяет просматривать не только фотографии пользователей, но и отметки на карте, где были сделаны эти фотографии. Если вы делаете фотографию с помощью стандартной камеры, то информация о вашем текущем местоположении автоматически заносится в EXIF-тег, находящийся внутри изображения и вы увидите новую отметку на карте. Это изображение можно отправить друзьям или разместить в интернете. А с помощью записанных координат все смогут увидеть, где был сделан столь замечательный кадр. Все красиво и удобно.

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

Основы разработки игр для iPhone с использованием Cocos2D

Время на прочтение6 мин
Охват и читатели29K
Привет, Хабражитель!

Многие люди мечтают научиться писать программы, игры, но не получается по многим причинам. Я, изначально, не хотел ничего писать потому что не было интересной платформы, и я был еще слишком маленьким. Потом все изменилось. Наступила новая эра в телефонной индустрии – появился iPhone. Я сразу, как о нем услышал, загорелся желанием его приобрести. Платформа сразу понравилась, кнопок и стилуса нет – самое то для игр.
Программы я начал писать в ноябре 2009, если их можно назвать программами :). Многие спрашивают как я учился – на видео-уроках с YouTube, а как еще? Читать непонятные уроки по iPhone SDK? В тот момент я загорелся идеей учить таких же как я – начал записывать видео на YouTube новым для меня темам.
Если интересно: http://bit.ly/pdyoutube. Потом все пошло и поехало, сам стал лучше программировать и запоминалось все намного лучше. Не буду писать очень длинное вступление – перейдем к самому интересному.

Всегда хотел делать игры, но на пустом Xcode не очень удобно и понятно. Стал выбирать платформу (фреймворк) для разработки игр под iPhone, iPad. Мой выбор остановился на Cocos2D. Многие спросят почему – он очень простой в использовании, очень! Он еще и бесплатный и часто обновляемый!

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

Разработка игрового приложения под iPhone

Время на прочтение7 мин
Охват и читатели10K

Разработка игрового приложения под iPhone



Начало

В октябре 2008 года на очередной встрече с двумя друзьями, я узнал, что оба они занимаются разработками игр под iPhone. В то время я уже имел почти законченный shareware проект под Windows.
Загоревшись желанием портировать его под iPhone, я начал работать в данном направлении.

Цели

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

Шаг Первый — Настройка окружения и компилятора под Windows, а точнее под Cygwin

Было потрачено где-то около месяца на сборку toolchain под Cygwin. Результатом этого был огромный makefile для сборки toolchain и скомпилированное приложение HelloWorld, которое негде было запустить, так как девайса у меня не было. Когда я говорю что это заняло месяц, это не означает что я месяц по 8 часов в день работал над этим, в основном работа велась по выходным и после работы. Много времени уходило на перекомпиляцию, фикс проблем с путями, фикс проблем компиляции и настройки среды CygWin (только Cygwin я переставлял раза три).

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

Магия в рантайме: инспектируем Objective-C объекты

Время на прочтение2 мин
Охват и читатели2K
Objective-C, в отличие от иных языков, тип указателя у объектов не имеет особого значения во время исполнения при посылке сообщений и используется лишь во время компиляции. Просто выполните и проверьте:
NSNumber *string = [[NSString alloc] initWithString: @"hello"]; 
NSLog(@"%@", string); 


Вы же не сомневались ;-) Мы бы могли использовать любой тип или вообще id.
Во время исполнения же всю нужную информацию получают у class object, через переменную isa. class object, c типом Class (или просто класс) – это синглтон, и поэтому классы у объектов можно сравнить простым сравнением указателей:
[object class] == [object2 class]; 


Если собрать всё информацию из class object, то несложно восстановить интерфейсы у объектов во время исполнения.
Читать дальше →

О блоках и их использовании в Objective-C часть 3-ая

Время на прочтение12 мин
Охват и читатели4.5K
Так же как и в топике — «О блоках и их использовании в Objective-C часть 2-ая», мы продолжим говорить о преимуществах использования блоков на живых примерах.
Здесь мы рассмотрим удобства использования блоков при управлении последовательностью операций.

5. UIView анимации, последовательность анимаций.

Для начала напишем простенький пример, в котором мы будем двигать кнопку с помощью анимаций(без блоков). Затем поменяем порядок анимаций чтобы посмотреть, какие изменения потребуются в коде.
Читать дальше →

Добавляем кнопку для UIKeyboardTypeNumberPad

Время на прочтение1 мин
Охват и читатели1.7K
Многие разработчики сталкивались с тем, что если в iOS для iPhone выбрать у UITextField тип UIKeyboardTypeNumberPad, то слева внизу будет пустое место вместо кнопки.

У этого типа клавиатуры не работает свойство returnKeyType и её возможно убрать с экрана только повесив обработчик на касание в пустом месте (например UIView)

Осторожно трафик
Читать дальше →

iPhone. Проигрывание аудио в фоновом режиме

Время на прочтение2 мин
Охват и читатели20K
Надеюсь что кому-то поможет это небольшое руководство по написанию iPhone-клиента для интернет-радио. Недавно мне понадобилось написать такое. В самообразовательных целях. Постараюсь охватить тему как можно шире в будущем, но сейчас хотелось бы сосредоточится на конкретном моменте, который вызвал у меня затруднения не далее чем сегодня, а именно на проигрывании радио в фоновом режиме.
Читать дальше →

Apple внедрила в iOS 5 функционал отвергнутого приложения из AppStore

Время на прочтение2 мин
Охват и читатели1.4K

Слева — оригинальный логотип программы WiFi-Sync, справа — иконка функции WiFi-Sync в iOS 5

Говорят, уже не первый раз Apple запрещает к распространению через AppStore приложения, которые дублируют функции интерфейса iOS. Но последний случай можно назвать из ряда вон выходящим. Приложение WiFi-Sync для беспроводной синхронизации iPhone с iTunes было отвергнуто для включения в AppStore в мае 2010 года, через месяц после подачи заявки. Автор программы, студент Бирмингемского университета Грег Хьюз (Greg Hughes), перенёс свою программу в альтернативный каталог программ Cydia для джейлбрейкнутых айфонов, где она стала бестселлером.

Каково же было удивление студента, когда 6 июня 2011 года он увидел свою программу среди новых функций iOS 5 в рекламе на офсайте Apple! Что интересно, Apple сохранила точное название WiFi-Sync и даже не потрудилась сильно изменить логотип.
Читать дальше →

О блоках и их использовании в Objective-C часть 2-ая

Время на прочтение9 мин
Охват и читатели9.4K
Продолжение топика — О блоках и их использовании в Objective-C часть 1-ая.

Многие из тех кто впервые сталкивается с блоками (или замыканиями), задают вопрос — «а зачем? Если и без них можно». Да можно. Но использование блоков имеет не мало преимуществ, и первое из них — существенная экономия на количестве кода, а следовательно и на времени написания и поддержке. Дальше буду говорить примерами.

Содержание:


1. Работа с контейнерами на примере NSArray.
2. Guards на примере UITableView.
3. Использование блоков вместо классов на примере scheduled операций.
4. Блоки вместо делегатов в UIAlertView.
5. UIView анимации, последовательность анимаций.
6. Асинхронные операции и управление ими. Переписываем пример с анимациями.
Читать дальше →

Пишем оповещение для iOS

Время на прочтение5 мин
Охват и читатели2.3K
Доброе утро/день/вечер/ночь %username%!

Предыстория

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

Казахстанцы отправляются в App Store или Как сделать приложение за неделю

Время на прочтение3 мин
Охват и читатели2.7K
По просьбе моих друзей-разработчиков публикую этот пост:

Привет, уважаемое Хабрасообщество!

Это мой первый пост и он, я надеюсь, не выйдет комом (хотя-бы в виде исключения).

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

Как это часто бывает, создав пару приложений на заказ, нас стали посещать мысли о собственном продукте. И вот, когда мы решили, наконец, им заняться, нашему главному разработчику (не могу умолчать – из самого Ubisoft!) приспичило уехать в США на месяц.

Осознав, что до разлуки осталась ровно неделя и ничего сложного мы все равно сделать уже не успеем, на ум пришла простая, и, на первый взгляд, реализуемая за день, идея. Идея: цифровые часы, где самые разные люди показывают, который час. Недолго думая, мы назвали это приложение HumanClock.

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

Под катом много фотографий с процесса!

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

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

О блоках и их использовании в Objective-C часть 1-ая

Время на прочтение4 мин
Охват и читатели32K
В OS X 10.6 и iOS 4.0 компания Apple анонсировала поддержку блоков, по сути являющиx собою замыкания. Дальше о блоках в контексте разработки под IOS, Objective-C (тоесть работа без gc).
Для использования блоков IOS ver. < 4.0 можно применить ESBlockRuntime или PLBlocks.

Кратко о теории


Экземпляр блока, тип блока и сам блоковый литерал обозначаются с помощью оператора ^, пример:

typedef int (^MyBlock)(int);

int multiplier = 7;
MyBlock myBlock = ^(int num) {
 return num * multiplier;
};


* This source code was highlighted with Source Code Highlighter.

или

int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
  return num * multiplier;
};


* This source code was highlighted with Source Code Highlighter.

Вызов блока аналогичен вызову обычной сишной функции. Например, так:

myBlock( 3 )

* This source code was highlighted with Source Code Highlighter.

Главной особенностью блоков является их умение хранить контекст в котором они создавались. В примере выше «myBlock» всегда будет умножать число на 7. Как же это все работает?
Читать дальше →

iOS tips and tricks: Динамический Default.png

Время на прочтение2 мин
Охват и читатели3.5K
При разработке под iOS время от времени у заказчиков, да и у некоторых программистов возникает закономерный вопрос: «А можно ли каким-нибудь образом при старте приложения подменять картинку?».

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

Однако, все же, это возможно сделать стандартными способами, без всякого рода Jailbreak'а. Впрочем, как и у каждого решения есть свои плюсы, минусы и особенности.

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

Используем блоки в IOS < 4.0

Время на прочтение1 мин
Охват и читатели1.2K
Для тех кто знаком с блоками в Objective-C, но не может пока их использовать в силу необходимости поддержки приложений для ios младше 4.0 версии, либо сторонится патченого компилера PLBlocks, предлагаю рантайм блоков в виде статической либы libESBlocksRuntime.a

Сам рантайм был выдернут с исходников проекта compiler-rt, и завернут в блоковые классы ESBlock. Добавлены недостающие методы -[ NSArray enumerateObjectsUsingBlock: ] и т.д. также UIView блоковые екстеншены.

Для подключения в проект достаточно скачать исходники проекта, и добавить его в dependencies например так.

Вопросы и предложения пишите в личку — с радостью отвечу каждому заинтересовавшемуся.

Здесь можно почитать о терии блоков на хабре.

Начинаем работу с Windows Azure Toolkit for iOS

Время на прочтение7 мин
Охват и читатели7.5K
Очень рад представить уже доступный тулкит Windows Azure Toolkit for iOS!

Первый релиз Windows Azure Toolkit for iOS позволяет просто и удобно получить доступ к хранилищу Windows Azure из iOS приложений. Также как и для Windows Azure Toolkit for Windows Phone 7 мы будем добавлять новые возможности в тулкит, такие как пуш-оповещение, Access Control Service и т.д.

iOS iOS iOS

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

Книги, видео и другие материалы по разработке под iOS

Время на прочтение4 мин
Охват и читатели114K
«Хочу программировать под iPhone — говори, что почитать...»
Любимая девушка


Когда решаешься заняться разработкой под iOS, то трудно выбрать литературу и ресурсы, которые действительно были бы полезны. Хорошо еще, что Apple предоставляет множество учебных материалов и программ с открытым исходным кодом в своем центре для разработчиков. В остальных книжках можно если и не утонуть, то порядочно захлебнуться. Сейчас я жалею, что потратил время на пару «мануалов». Не буду делать им антирекламу, а лучше порекомендую хорошие материалы по программированию под iOS.

Под катом книги, видеокурсы и блоги, которые будет полезно прочитать/посмотреть.
Читать дальше →

Что нужно знать перед тем, как писать под iOS

Время на прочтение7 мин
Охват и читатели308K
«Под Windows можно писать для iPhone?»
Анонимный разработчик


«Мы не планируем публиковаться в AppStore, это ведь возможно? И еще мы хотим версию под Android...»
Анонимный заказчик


Если вы решились разрабатывать приложения для iPhone/iPad, то, скорее всего, вас заинтересуют следующие вопросы:
  • как можно заработать на приложениях?
  • как зарегистрироваться в iOS Developer Program и что дает регистрация?
  • обязательно ли нужен Mac?
  • какие инструменты можно использовать для разработки?
Ответы на вопросы

Бесплатные инструменты мониторинга и статистики App Store

Время на прочтение2 мин
Охват и читатели65K
Мы будем следить за твоими успехами, юный Скайуокер.
(с) канцлер Палпатин.

В статье рассматриваются 3 сайта для мониторинга рейтинга/статистики AppStore, которыми я чаще всего пользуюсь. Дана краткая характеристика каждому ресурсу.
Эта статья может быть полезна:

  • раработчикам программ для iДевайсов (как начинающим, так и не очень)
  • маркетологам
  • всем, кто следит за бурным ростом мобильного IT вообще и AppStore в частности.


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

Наиболее часто использую
Читать дальше →