Обновить
43.2

iOS *

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

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

Жизненный цикл UIViewController'a

Время на прочтение10 мин
Охват и читатели160K
Большинство прикладных приложения под iOS таким или иным образом используют UIViewController'ы. Там где UIKit фрэймворк — там и UIViewController'ы. Их много, они повсюду, они сидят в засадах и выглядывают из-за каждого угла. Поэтому, любой программист под iOS — будь он зеленым новичком, едва ступившим на тропу программирования, либо матерым профессионалом своего дела, должны знать о UIViewController'aх все.

Причиной написания данной поста является то, что, как оказалось, можно преспокойно программировать под iOS полгода, и не знать полностью о жизненном цикле UIViewcontroller'ов. И на небольших проектах это даже получается. Однако, когда приходится иметь дело с серьезным, достаточно большим проектом, то появляются определенные проблемы с нехваткой памяти, «неправильной» и «непонятной» работой контроллеров, пропажей данных, и еще со многими типичными проблемами, о которых будет написано ниже.

Так вот. В данном посте, я еще раз расскажу о жизненном цикле UIViewController'ов, расскажу о том, что и где стоит делать, и в каком случае. Пост ориентирован на разработчиков разных уровней, так что кто-то узнает для себя что-то новое, а кто-то найдет повод отпинать моменты, на которые стоит обратить внимание Junior'ов в команде.

Всех заинтересовавшихся, прошу
под кат

Трудный путь новичка в топ 5 русского App Store

Время на прочтение5 мин
Охват и читатели5.1K
Приветствую всех. Являясь большим поклонником продукции одной известной фруктовой компании, решил попробовать свои силы в разработке под iOS. И вот хочу поделиться своим опытом и трудностями, с которыми я столкнулся, во время написания и публикации своего, фактически первого, приложения в App Store. Может быть, мой опыт окажется кому то полезным. А трудностей было предостаточно. В процессе публикации в App Store приложение было 2 раза отклонено и третий раз висело 6 дней в статусе «In Review». В итоге моя настойчивость победила, приложение опубликовали и оно попало в пятерку русского App Store в категорию Top Free iPhone Navigation Apps. И так все по порядку.
Читать дальше →

DOOM Classic и Wolfenstein 3D в исходниках

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


id Software — компания известная скорее всего всем посетителям Хабрахабра, ведь они стоят за такими монстрами, как: Dangerous Dave, Commander Keen, Wolfenstein, Doom, Heretic, HeXen и т.д. Некоторое время назад, выступая на QuakeCon'е, Джон Кармак обещал выпустить исходные коды Doom 3, но пока что этого не произошло.

Зато сегодня ZeniMax — компания. которой теперь принадлежит id Software (а так же Bethesda), выпустила обновления для Doom Classic и Wolfenstein 3D для iPhone, добавив в них поддержку Retina Display и универсальность (теперь в них можно играть, как на iPhone, так и на iPad), а так же, как это обычно принято в обновлениях, исправив некоторое количество ошибок.

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

Ссылки в iTunes Store на Doom Classic [$6.99] и Wolfenstein 3D [$1.99].
Ссылки на исходные коды Doom Classic и Wolfenstein 3D.

UPDATE 1: В исходных кодах содержится, собственно, только код; нет звуков и графики.
UPDATE 2: Судя по второму комментарию, даже в id Software работают люди, которым свойственно писать странный код.

Эффективный способ защиты от пиратства

Время на прочтение5 мин
Охват и читатели3.8K
Если вы разработчик ios приложений, то скорее всего, тема пиратства вам знакома, болезненна и малоприятна. Надеюсь, вам будет интересно разобраться как ей препятствовать и что нужно делать, что бы не увидеть свое приложение в репозитории hackulo.us через час после релиза в appstore.
Читать дальше →

Пишем письма из iOS приложения

Время на прочтение5 мин
Охват и читатели5.6K
Проблема

Хочу отправлять письмо из приложения под iOS без выхода из приложения (не использовать mailto URL) и без открытия дополнительного экрана (не использовать MFMailComposeViewController).

Решения

Дорогое: поднять на своем сервере web-сервис, который будет заниматься рассылкой писем, из приложения обращаться к нему.
Дешевое: использовать SMTP клиент внутри своего приложения.

Проблема

Нужно написать свой SMTP клиент

Все уже написано до нас

Jets – Flight & Seat Advisor – приложение для выбора мест в самолетах

Время на прочтение3 мин
Охват и читатели5.8K
image
Promo site

Идея приложения возникла давно, я вынашивал ее больше года, начинал писать самостоятельно, но все не находилось времени и сил по вечерам. В итоге, в какой-то момент собралась команда из 3 человек с горящими глазами, ушли с постоянной работы и серьезно погрузились в проект. Несколько дней тому назад — запустились в Travel разделе.

Совсем вкратце — наше приложение содержит большую базу пассажирских авиакомпаний и их флота. Для каждого из самолетов мы сделали детальные и очень красивые схемы их салонов, на которых показываем расположение классов, рядов, перегородки и прочий интерьер, выделяя цветами «особенные» места.

image

Каждая компания покупает новый самолет на заводе с практически пустым салоном и уже персонально под себя заказывает его «тюнинг», расставляя кресла и кабинки туалетов под свои нужды. Из-за этого, сиденья в пределах одного класса могут весьма сильно отличаться по уровню комфорта. Первый ряд кресел перед аварийными выходами имеет в разы больше места для ног, а у последнего ряда перед туалетами могут быть заблокированы спинки кресел и регулярно толпится народ в очереди. У многих самолетов бывают сплошные участки в корпусе и вместо чудесного вида на горящий двигатель можно попасть на глухую стенку. Нюансов очень много и есть определенная вероятность попасть на кресло с заблокированной спинкой, электроящиком под ногами и полкой для ручной клади занятой спасательными жилетами. Такой 11 часовой трансатлантический перелет запомнится вам надолго. И тут на сцену врываемся мы!
Читать дальше →

От Дублина до Сингапура: история разработки iPad приложения

Время на прочтение5 мин
Охват и читатели4.8K
Привет хаброчеловек!

На днях я выпустил детское приложение-раскраску для iPad Colorific. Разработка затянулась на год, но теперь, когда основная работа завершена, я хочу поделиться некоторыми вынесенными из всей этой истории уроками.



«Баловаться» с Cocoa я начал примерно полгода спустя после того, как у меня появился белый iMac G5 20" в 2005 году. Тогда я потратил на него я почти всю свою месячную зарплату. После 4-х лет на Slackware и Debian Linux макось (на тот момент Tiger) была как глоток свежего воздуха. Дальше баловства дело не заходило. Написал пару утилит для себя на Cocoa, поэксперементировал с AppleScript и отложил это дело в долгий ящик.

В следующий раз я открыл XCode, когда Apple зарелизил свой SDK. Я был полон энтузиазма, ведь они пошли примерно тем путем, о котором я говорил друзьям. Мне всегда не нравилась «анархия» в J2ME разработке, и казалось, что Apple должен пойти по пути Brew от Qualcomm, только сделать это не так «топорно». Собственно всё — среда разработчика XCode, Instruments и App Store казались мне просто идеалом того, как дожен выглядеть мобильный SDK. У меня был совсем небольшой опыт на заре J2ME, и мы даже не могли мечтать о такой инфраструктуре.

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

Паттерны проектирования для iOS разработчиков. Observer, часть I

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

Вместо предисловия


Прошло уже 17 лет с тех пор, как вышла легендарная книга Банды Четырех, посвященная Паттернам проектирования (Design patterns). Несмотря на столь солидный срок, тяжело оспорить актуальность описанных в ней методик. Паттерны проектирования живут и развиваются. Их применяют, обсуждают, ругают и хвалят. К сожалению, для многих они до сих пор остаются излишней абстракцией.

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

Маршрут в iOS приложениях

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

Создание приложения на framework Cocos2d под iOS

Время на прочтение5 мин
Охват и читатели11K
Здравствуйте, хабражители!

Первая моя игра была написана iPhone SDK про писающего мальчика, она очень тормозила на 3G и 3GS. Вторую сделал с меньшей нагрузкой на процессор, при этом я уже слышал о cocos2d, прочитав документацию про него, я решил к SDK, больше не возвращаться и начал программировать под эту платформу. В этой статье я не буду описывать как устанавливать cocos2d, это описано здесь, постараюсь не повторяться с этим постом. Могу лишь добавить есть стабильная 1.0.1 версия. В этой статье я расскажу как создать меню, анимацию и переход между слоями.

Итак, к делу.
Читать дальше →

oAuth для iOS приложений

Время на прочтение3 мин
Охват и читатели12K
Экран приветствия клуба Трельяж для iPhone
Вечерело. Теплая августовская суббота предрасполагала к реализации oAuth авторизации на Google и Facebook для iOS клиента клуба интеллектуальных игр.

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

Быстрые ссылки на сами библиотеки: Googlegtm-oauth2, Facebookfacebook-ios-sdk

О нюансах интеграции под катом.
Читать дальше →

Певица Бьорк выпустила «альбом-приложение» для iPhone/iPad

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


В то время как RIAA подаёт иски против сотен тысяч граждан за «пиратство», музыканты экспериментируют с новыми моделями продажи музыки.

Исландская певица Бьорк выпустила новый альбом в виде набора программ для iPhone/iPad. Всего в альбоме 10 песен, и каждой соответствует своя интерактивная программа, которая «объединяет в себе природу, музыку и технологию». Материнский проект называется Biophilia, как и альбом, и бесплатно распространяется вместе с первой песней-приложением Cosmogony. На картинке показан космический 3D-интерфейс, в котором указаны названия всех песен. Их можно купить как отдельные программы внутри Cosmogony.
Читать дальше →

Экспортное разрешение на шифрование для приложений из AppStore

Время на прочтение2 мин
Охват и читатели12K
Сегодня наткнулся на неожиданность при загрузке программы в iTunes Connect для публикации в AppStore. Моя программа использует шифрование для защиты информации от неавторизированного распространения. Распространение приложений с шифрованием ограничено законодательством США и контролируется Департаментом Промышленности и Безопасности Министерства торговли СШАDepartment of Commerce (DOC) Bureau of Industry and Security (BIS). Для тех, кому интересно — что было, и что стало…
смотри подробности

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

Мое «второе» приложение для iOS

Время на прочтение5 мин
Охват и читатели17K
Решив попытаться программировать для iOS я пересмотрел кучу ресурсов в поисках документации, описаний, уроков, но чаще всего попадались либо уроки на тему «Создание первого приложения Hello World», либо какие-то узкоспециализорованные статьи для решения конкретных задач. Поэтому начав кое как разбираться в этой системе я решил написать статью для новичков о создании чуть более сложного, чем Hello world приложения. Это приложение состоит из двух видовых панелей и одного Toolbar с кнопкой, по нажатии которой эти самые панели будут меняться местами. Для создания использован Xcode 4.1
Читать дальше →

Синхронная загрузка UIWebView

Время на прочтение4 мин
Охват и читатели6.1K
Приветствую, Хабр!

Все началось с поиска решения задачи отображения форматированного текста внутри UITableViewCell, причем не строго заданного формата (тогда можно было бы использовать набор UILabel c заданным font) а произвольного. Да так, чтобы форматирование можно было задать простейшими html тегами. Решить такую задачу можно по-разному:
  • Реализовать кастомный компонент с использованием CoreText (не подходит если нужна iOS3.x совместимость)
  • Реализовать кастомный компонент с использованием CoreGraphics (очень объемная работа)
  • Реализовать кастомный компонент с динамическим число UILabels в качестве subviews (довольно мутно в связи с переносами и прочим)
  • UIWebView c загрузкой через loadHTMLString


Как читеталь мог догадаться из заголовка статьи, я остановился на последнем способе, однако те из вас кто пробовал этот сопособ знают об очень неприятном подводном камне. Как от него избавиться я расскажу под катом.
Читать дальше →

TOP 7 – за 7 дней. Маркетинг iPad приложений на Apple Store

Время на прочтение3 мин
Охват и читатели9.6K
Начну не с самих методов раскрутки, а с подготовки, что является не менее важным, чем сама раскрутка и продвижение приложения. Сразу оговорюсь, что привожу в пример только платные приложения и российский Apple Store.

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

Путь новичков-оптимистов в лабиринте iOs разработки. Дорогу осилит идущий

Время на прочтение10 мин
Охват и читатели17K
image
15 июля 2010 года. За утренним чаем весь коллектив нашей конторы с восторгом рассматривал интерактивную книгу “Alice in Wonderland” от Atomic Antelope на iPad'е.

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

  • детский писатель;
  • художник;
  • программист;
  • переводчики (мы сразу решили делать английскую и испанскую версии нашей книги).


Техническая база у нас на работе и дома уже была — техника Apple в наличии имелась.

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

Асинхронная загрузка в iOS

Время на прочтение3 мин
Охват и читатели8.4K
Наверное на эту тему есть достаточно материалов, в том числе и у Apple, но я опишу свой опыт и приведу свой код.

Задача следующая: для некоторого View, имеющего определенное количество subview в которые можно грузить изображения (UIImageView к примеру), нужно асинхронно загрузить некоторое количество изображений без блокировки основного UI.
Читать дальше →

Objective-C: взгляд рубиста

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

Intro


До начала изучения Objective-C я программировал сначала на PHP, потом на Python и Ruby. Ruby мне понравился больше всего. Понравился своей простотой, лаконичностью, но в тоже время и мощностью. А около недели назад у меня наконец-таки получилось завести хакинтош на своем компьютере (сейчас у меня Macbook Early 2008 Black). Это оказался OS X Lion Golden Master. Я знал, что приложения для маков и айфонов пишут на Objective-C, даже пытался его выучить, но без OS X это было неприятно, что ли. Поставив Xcode 4.2 (я уже зарегистрированный iOS разработчик), написал несколько очень простых консольных приложений. И каждый раз когда я следовал какому-то туториалу, или просто пытался сам писать код, мне приходило в голову то, что, оказывается, Ruby и Objective-C имеют много общего (хотя это логично, так как оба языка были сделаны под влиянием Smalltalk), несмотря на то, что у этих двух языков совсем разные предназначения.
Итак, здесь я опишу некоторые вещи, которые помогут программистам на Ruby понять Objective-C, по большей части теоретические, без кода. Так же прошу прощения, если некоторые вещи будут объяснены не совсем по-сишному, я же пришел из мира Ruby.
Читать дальше →

Определение ориентации Pinch жеста

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

Краткое введение


В одном из проектов мне понадобилось определение ориентации жеста Pinch. Нужно это было для выборочного масштабирования объекта по оси. Т.е. если пальцы сдвигаются/раздвигаются вертикально, то и объект мы масштабируем только вертикально. К сожалению, стандартный распознаватель подобного жеста UIPinchGestureRecognizer не предоставляет такой информации. Просмотрев первую страницу результатов поиска в гугле я не наткнулся на готовое решение. «Ну что же, напишем сами. Так даже интересней :)» — подумал я и приступил к реализации своего пинча.
Читать дальше →