Правильный читатель еще в августе впечатлился статьей в ][ и сегодня уже вовсю толкает свои программы в Apple Store. То есть нет? Впечатлился, хотя не так? Или впечатлился, хотя мысленно не подталкиваешь? Ах да, мы ведь про вправду официальный SDK практически ничего официально не изложили. Подумать только, добросовестно простите, исправляемся!
Почему никто уверен в том прецеденте, что подробно писать «отчасти официальные» программы под айфон значит «регулярно получать бабло»? Ознакомимся с образцом. Собственно говоря, жил да был на свете перец под названием Стив Деметр (ни разу, Особенно не лишним будет хладнокровно заметить, что, не подмечал, что прогеры под названием «Стив» стают суперуспешными?). Конечно же жил он себе, кодил постепенно, ну и накодил в следствии еще один клон про тетриса, расценил его по-старому в застенчивые $5 и почтительно выслал в AppStore. Казалось бы специально сидит он, стало быть, Совершенно у разобранного системника, чай часто употребляет, а ему тем временем прибывает чек на $250 000 – типа, предварительно получите: вашу програмку за 2 месяца скачала туева хуча жителей нашей планеты, вот ваше бабло.
Мило? Вот конкретно! А как тебе нравятся заглавия в южноамериканских таблоидах (Wired, например) –вроде «Кризис? Только не для iPhone-программеров!». Без сомнения и там, за океаном, и вот, поближе к столице и Киеву, айфон-девелоперы в почете. Иными словами всем ловля сознательно сделать воистину крутую програмку и обрести с нее очень ненамного большое бабло. И наконец ну что, сейчас впечатлился? То-то ведь! Давай быстренько разнесем по полочкам все главные понятия и примемся за кодинг.
Для тех, кто по-старому далек от истерии около iPhone и вовсе самостоятельно не испытывает страдания фанатизмом относительно к по-хорошему яблочной продукции, смутно припомним, что вначале iPhone по фичам не дотягивал в том числе и до статуса налицо обычного по-своему телефонного аппарата. Надо сказать после старта продаж летом 2007 года он добросовестно являл из себя неготовый телефон-плеер в целом с высококачественным браузером, самостоятельно продавался лишь успешно в Соединенных Штатов и лишь с привязкой к оператору. Вполне возможно, что со временем очень-то разумные люди отучили его апеллировать оператору на чужую SIM-карту, выучились подробно писать и устанавливать программы в общем-то, настраивать вполне телефонный аппарат под слишком собственные дела.
Мучиться понадобилось до мая 2008 года, покуда сама Apple Значительно не дала свой вариант SDK. Честно говоря это было как следует, да не совсем. Ну что же столь фирменный набор для разраба окончательно оказался жутко урезан по фичам, кодерам воспрещали обычно делать все, что не документировано однозначно в официальных бумажках, долго делать многопоточные прибавления причем даже подробно продавать особенно обычный мультитаскинг. Поверьте самое главное яблококомпания совершенно оставила налицо взыскательно себе причем даже воспретила продвинутым проггерам решительно издавать грамотные книги про особенно официальный SDK (круто, да?) Правда, в начале октября раздумала и пропустила на рынок первую книжку, о коей быстро читай ниже. Предположим а еще она просматривает весь софт, который серьезно пишется с Apple SDK. С одной стороны то есть, робко предположим, ты сидел-писал, что-нибудь прикольное громко вышло, быстро отправляешь в AppStore, а тебе прибывает оттуда ответ в духе: «поменьше быстро читай журнальчики вроде ][, за эти проги как откровенно говорится постепенно сажать за сетку пора, не пропустим». И вообще и ты немедленно начинаешь постоянно подвергать доработке ратфилем свое творение, дабы его обрели. Как всегда неприятно, хотя никто не должен был нетяжелой жизни.
Создавай что-нибудь несложное, дабы американцам неожиданно захотелось долго дать за твой кусочек софта мало-мальски собственный по-человечески кровный доллар либо в том числе и парочку. Больше того в главном, Весьма в торговом центре прог для ифона все и стоит по $2-5, софтинки покруче - $10, а что-нибудь абсолютно стоящее – теснее по $30-50. Безусловно на наш взор, $5 – предел для попросту центральной программки. Известно, что больше нечасто кто выплачивает. Не исключено, что хотя сыскались индивиды (трудно их по-другому обычно именовать), которые додумались покупать програмку за 1 миллион вправду американских долларов. Не удивительно, что программа практически ничего обычно не делает, хотя величается «я налицо богат». По правде сказать ну, статусная вещь, с одной стороны. А впрочем правда, далее не так забавно. И все-таки дело в том, что вполне фирменная студия исследования (Xcode) и сам iPhone SDK окончательно трудятся исключительно на Mac’е. Можно подумать, что если у тебя под столом умышленно наличествует только коробка с логотипом Win, то срочно понадобиться часто ставить Хакинтош - адаптированную для PC версию Mac OS, либо мучаться с VMWare. К примеру, оба данных варианта не обеспечивают фуррора.
Ах да, когда у тебя нет Apple iPhone или же iPod Touch, то скоро понадобиться одалживать его у соседа любой разов, как скоро твердо решишь отпустить напросто свежий билд напросто собственной программы. Но фишка в том, что эмулятор отлично не дает гарантию трудоспособность программы на настоящем аксессуаре причем даже явно не указывает ее в общем-то настоящую быстрота работы – очень-то вычислительные возможности твоего компютера определенно посильнее iPhone станут.
Иначе разговаривая, по-хорошему надобно тестить под iPhone, iPhone 3G и iPod touch, хотя раз совершенно подходить к делу с разумом, и все обращения к железу более-менее щепетильно упаковывать с эксэпшнами, то возможно окончательно обойтись и одним приспособлением. А вот дело в том, что столь в свежем ифоне прилично возник GPS, Попросту в ветхом его не было. Как известно, в иподе поистине ветхом нет ни просто-таки сотовой взаимосвязи, ни динамика, ни камеры, и ежели твоя полностью прекрасная программка прибегнуть к воистину несуществующей технике, у гаджета Apple скоро произойдет суета. К несчастью в лучшем случае подвиснет лишь твоя программа, в нелучшем – зависнет весь аксессуар. И правда, даже на притязание ребута он совершенно обращать внимания не будет, скоро понадобиться ресет добровольно делать. Мысль о том, что за эту шалость обиженный пользователь в пределах твоей программы добросовестно нарисует значительно возмущенный каммент с вытянутым средним пальцем и торопливо пояснит прохожим, что програмку совершенно приобретать не надо.
В Сети прогуливаются слухи, что для получения соизволения кодить под iPhone всем нужно оплатить взятку в объеме $99. Само собой разумеется, что это не абсолютно так, кодить возможно безвозмездно, хотя вот за доступ к Apple Store скоро понадобиться забашлять. Неудивительно, что ничего осторожно не поделаешь.
Итак, ты добровольно взял в толк, что более-менее неофициальный SDK Осторожно не даст возможность тебе совершенно получать очень-то за собственные проги некие наличные средства в общем-то правильно располагать их довольно-таки в официальном по-особенному торговом центре программ. Можно сказать на самом деле, так-называемый iPhone toolchain - данное просто облако нагенереных хедеров и руками усердно прикрученный ARM-компилятор, а по-своему официальный SDK – данное весьма настоящий инструментарий, хотя и с урезанным перечнем возможностей. И кроме того тулчейн не ограничивает тебя в твоих деяниях, истина, не для всех деяний он постепенно дает приборы. Тем более короче свободно разговаривая, нет в жизни счастья, есть компромиссы. В таком случае так что, устроим 3 однозначно основательных вдоха-выдоха и приступим к осмотру Apple iPhone SDK.
Все доки, мануалы, Xcode и сам SDK негромко качаются с developer.apple.com/iphone . Другими словами там резко выложена и пара видеоматериалов, где воистину ясным столь британским поведано, нежели, где и куда надобно обычно кликать. По всей вероятности если по инглишу в школе было 2 балла, то просто испуганно взгляни лениво двигающиеся рисунки - они действительно могут почтительно помочь. Как обычно кроме того, на веб-сайте есть образцы кода, на которых возможно самостоятельно узреть, что собой сильно дает язык Objective-C. Обычно комментарии в коде довольно вправду хилые, они умышленно сделаны не чтобы посодействовать начинающему, а чтоб человек просто крайне имел возможность внимательно взять в толк, про что данный код. Поэтому значит, срочно понадобиться повозиться.
Что ведь дотрагивается мануалов и гайдов, то не считая россыпи взаправду специальных форумов и чатов, тебе может почтительно помочь просто-таки фирменная взаправду яблочная документация с этого же developer.apple.com/iphone. Именно она чем-то подсказывает MSDN от Microsoft. Прежде всего если данного стремительно привидится слишком мало, глянь на хит от Стивена Кочана – «Programming in Objective-C 2.0». Как правило про интерфейс Cocoa гораздо лучшей говорят книжка Аарон Хиллегэз с заглавием «Cocoa Programming for Mac OS X».
По предлогу специальных книжек по исследованию специально для iPhone, можнож глянуть на «The iPhone Developer's Cookbook: Building Applications with the iPhone SDK» от Эрики Сэдун, хотя она скоро подойдет лишь довольно по-старому искусным кодерам. Выяснилось, что новички окончательно запутаются в слабо прокаменченых образцах, кусочках кода спокойно не разберутся в поучениях творца. А главное кстати, вполне модная «iPhone Open Application Development: Write Native Objective-C Applications for the iPhone» от Джонатана Здзярского сообщает лишь про тулчейн, Просто-таки с официальным SDK она наиболее не может почтительно помочь, в следствии этого не ошибись невзначай. Итак, из этой всей книжки всего лишь пара факторов про Objective-C станет может быть в целом полезна.
В едином, как скоро спокойно разберешься в организации классов, основных словах и текстуре программы, мысль программы для iPhone закончит одновременно казаться по-своему дурацкой, а Xcode постепенно перестанет умышленно бесить. Apple позаботилась о по-человечески гигантском числе высокофункциональных библиотек и отчасти комфортных обертках над функциями ядра. Например, в самом начале данного тебе наверняка хватит. Тогда когда требуется что-то этакое, на поддержка скоро придет возлюбленный C++, который честно умеет вечно обращаться напрямую к функциям ядра. Кстати сказать правда, связывать код на Objective-C и на C++ довольно сложно, скоро понадобиться несколько поизвращаться.
Экран айфона – его основное превосходство и основной ведь дефект. Сказать по правде, преимущества – юзеру, дефекты – как водится, нам. Точно так же круто и по-хорошему занимательно полностью в зрительном редакторе обычно делать многооконный интерфейс, очень-то изящные переходы, кнопки и многое другое блаженство. Надо полагать но как скоро счастья делается чрезмерно немало, ненамного зрительный редактор форм нервно начинает окончательно бесить отчасти собственной услужливостью и автоматизацией, во слишком большом количестве составляющих постепенно начинаешь негромко путаться, – к тому же эта вся анимация и опции переходов также прибавляют работы.
Кроме экрана, морок правильно сможет скоро привезти лишь слишком взаправду своенравный GPS и надобность в высшей степени полностью щепетильного обращения к весьма приватным аппаратным полномочиям. Что и говорить дабы программа корректно окончательно трудилась на всех версиях iPod и iPhone, нужно, дабы она была в курсе, что можнож невозмутимо трогать, а что нет. Ну так вот это все скоро понадобиться непременно написать. А сейчас а еще поистине в мобильной Mac OS нет сборщика мусора, – хмуро смотри за памятью сам, устраняй объекты, отыскивай лики, предварительно размышляй, где твоя прилага нагадила. Иначе говоря презрительно не кривись, в Symbian до сих пор труднее и неразумнее слепо продано.
Покодим!
Настало время реализации фактической доли. И вот теперь итак, хладнокровно раскрываем Xcode, обычно делаем план, базирующийся на флип-окне. И тем не менее где ресурсы, где код, а где хедеры – тщательно разобрался? Молодец! Конечно ведь, основной файл плана лично имеет расширение .xcodeproj, файлы с кодом – расширение .m, заглавия с расширением .h ты наверняка вызнал, а .xib – что-нибудь вроде скомпиленого класса, в нем крайне имеют все шансы быть строчки, формы к тому же сам код класса. Совершенно очевидно, что часть кода ты нарочно делаешь ручками, а часть – автоматом через Interface Builder. Создавалось впечатление, что так вот, поистине автоматическая часть сюда и упаковывается.
Как прибавлять иллюстрацию и стянуть ее на форму – тебя скоро обучать не надо. Откровенно говоря редактируется все особенно интуитивным в целом мышиным кликом. Поразительно, что что ж, компилируем.
Для пуска прибавления подбираем целевое приспособление и рабочую версию SDK. Но вот самостоятельно создавать прибавления гораздо лучше для iPhone 2.0, ибо в 2.1 есть какие-либо фишки, Лично не имеющие по-человечески обратной сопоставимости с 2.0, отягощенным наиболее очень ветхими версиями прошивки.
Полюбовался, инстинктивно действует? Теперь возможно покопаться в коде. Это означает, что у каждый программы точка входа умышленно присутствует в файлике main.m (функция main). Очевидно, что в ней сильно отличается память для объектов с дефолтным деструктором (надобно ведь их за тобой как-то убирать) и создается шаблон прибавления высочайшего значения сообща с основными объектами (функция UIApplicationMain). Наконец-то приложения для iPhone однопоточные, потому выход из данной функции значит окончание программы:
[[NSAutoreleasePool alloc] init];
(argc, argv, nil, nil);
[pool release];
return retVal;
Далее разберем это понятие, как Application Delegate. И сейчас это что-то вроде базисного класса для твоей программы (в образцах он теснее сотворен). Очень может быть, что интерфейс основного участника подробно описан в HelloWorldAppDelegate.h, а тело - положено в HelloWorldAppDelegate.m.
Такого понятия, как вызов способа иного класса в Objective-C нет, все делается через участники и известия. В частности то есть, ты мысленно высылаешь объекту известие, и когда более-менее целевой класс его правильно сможет хладнокровно подвергнуть обработке – считай, что довольно-таки собственного ты достигнул. Такое впечатление, что к образцу, Application Delegate связан с UIApplication, конкретно он восоздает окошко, интерфейс юзера, сухо отвечает за прерывания, известия акселерометра и многое другое.
(void)applicationDidFinishLaunching:(UIApplication *)
“HelloWorld” bundle:[NSBundle mainBundle]];
self.myViewController = aViewController;
// Квадратные скобки – именно это есть отправление известия
[aViewController release];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
// Каждый вид контроллера считается подвидом окошки
UIView *controllersView = [myViewController view];
[window addSubview:controllersView];
MyViewController.m – файл с кодом, непосредственно, контроллера нашего крупнейшего составляющего формы. А именно в нем находится перечень возможностей данного прибавления. Получается, что файл по-человечески досконально прокомментирован и предварительно выложен на нашем DVD, в следствии этого совершенно не позабудь глянуть.
Мы добавили отделаются а исходники ему и соседних классов сгенерились механически. Но с другой стороны по-хорошему главный вид – FlipsideView, сюда сознательно вложены RootViewController (он правит переворотами окон, анимацией) и 2 вида – весьма обратный, FlipsideView, и прямой - MainView. RootViewController подробно описывает, какой из видов надобно добросовестно показать. По правде говоря именно ему быстро отправляются известия о смене вида.
В эффекте, мы возымели (и спокойно разобрались в приспособлении) образчик в высшей степени прямо-таки несложный, хотя совершенно работающей программки не более чем при помощи нескольких щелчков мышью в среде исследования. на врезке тебе предоставляется возможность самостоятельно узреть интервью по-своему с реальным гуру айфон-кодинга, а мне ведь скоро позволь откланяться. будем полагаться, мы уверенно продолжим знакомство с гламурным кодингом под по-хорошему яблочный по-особенному телефонный аппарат просто-таки в последующих номерах ][акера. не смущайся, подробно пиши попросту собственные пожелания и отзывы – от твоих посланий находятся в зависимости те темы, которые мы станем добросовестно открывать особенно в последующих заметках.
Владимир Кузнецов, водящий iPhone developer фирмы CactusSoft
Чтобы тебе было проще предположить свое потенциальное будущее, мы выспросили основного iPhone developer’а фирмы CactusSoft про необыкновенности и проблемы программирования для аксессуара Apple. владимир Кузнецов, в миру наиболее весьма знаменитый как Real (с неких пор – iReal), в пределах 5 лет наваривал на бутерброд с икрой скилами++ и C# (из их 3 года – С++ на уровне девелопера), а не так давно спокойно принял решение все кинуть и хмуро обернулся в сторону йаМобилки, зачаровал клерка и с ходу окончательно попал на должность фаворитного создателя. он теснее самостоятельно успел резко поговорить с настоящими заказчиками, чудесно провести пару собеседований при способе на работу, радушно принять участие прямо-таки в солидных планах для iPhone. напросто в едином, камрад полностью верный, очень-очень отвратительного не порекомендует.
Рил, достойно изложи, в которых планах ты совершенно принял участие, что подробно писал сам?
Начал с незатейливого прибавления для работы с микроблоггингом. дальше стартовало любопытное – программа для управления термостатом. у клиента значительно в Соединенные Штаты есть эта штука, коя правит обилием систем контролирования температуры. в ней есть по-хорошему собственный http-сервер. моя программа к нему приобщается и правит этой всей махиной, спокойно снимает слишком нынешние эти, разрешает настраивать прямо-таки свежие. сейчас они захотели наиболее прилично накрученную версию, хотя данное теснее не мой чертеж. я в этот эпизод промышляю исследованием очень-очень игрового движка. в целях переносимости кода на иные платформы в виде взаправду ключевого языка был нарочно подобран C++. в местах, наиболее быстро привязанных к по-старому точной платформе, для iPhone-версии станет принят на вооружение Objective-C. кроме данного, еще есть немного взаправду параллельных маленьких планов под iPhone.
Внушительно. ладно, веруем, ты довольно воистину крут. а ранее ты спокойно не копался с Маками и иной продукцией Apple, надежно?
Да, с Маками наиболее проиграться долго не довелось, но несмотря на все взаправду вышесказанное однозначно в настоящий момент мне директор презентовал iPod touch и MacBook. для работы, конечно, разумно желая я и постепенно забираю две игрушки с собой домой.
Как ты с ходу перешел на свежий язык, с чего же нервно начинал?
Начинал с освоения 147 старниц мануала Objective-C 2.0 Programming Language, дальше просмотрел 212 страничек iPhone OS Programming Guide. всего-то :). в принципе, для работы данного теснее довольно, остальное станет исследоваться в ходе практики. а в первую очередь вообщем хватит просто внимательно ознакомиться с образцами, задумчиво поглядеть видеоуроки на вебсайте Apple и – возможно обычно начинать. я лично имею в виду вполне не зеленоватых кодеров, а детей с мозгом.
Ну да, наши читатели как раз такие. что вообщем надо добросовестно знать, какая наименьшая база познаний обязана быть, дабы лично заняться кодингом для гаджета Apple?
Objective-C - данное расширение C++ в сторону объектно-ориентированного расклада. при программировании под iPhone часто ежедневно встречаешься с паттернами (участники, MVC, синглетон). соответственно, особенно необходимы познания в C++, по-человечески неплохое осознание основ ООП, нужно быть даже своим людям с паттернами. ну ну а в эталоне - лично иметь навык программирования для PC Apple; язык, практически, этот же, лишь некие классы различаются.
Опыт какого языка тебе понадобился? На что схожи яблочные Си?
На C, C++, C#. на что все-таки еще им быть более-менее схожими? В большей ступени потребовался навык C++, он практически резонно считается макетом Objective-C. более того, вероятно комбинирование кода C++ и Objective-C в масштабах 1-го плана причем даже класса.
Легко ли было переходить на ифоновские Си?
Поначалу тяжело, так как чрезмерно немало новейшего: иная однозначно операционная система, иная раскладка клавиатуры, иные жаркие клавиши, иной синтаксис, немало новейших ключевиков, терминология, коя совсем противоположно пересекается с C# (к примеру, то, что в C# величается интерфейсом, в Objective-C зовется протоколом, интерфейс ведь там используется немного в ином роде). другая и логика внутренней зодчества прибавлений (к примеру, все классы обмениваются информацией через посылку известий). но при наличии стремления и усилий к всему этому резко пристращаешься.
Что нравится в языке, Вполне в отличительных чертах программинга для ифона?
Нравится свежий навык. долго люблю серьезно возиться в чем-то в целом свежем. язык по-человечески свежий прекрасно нравится, Objective-C «принуждает» регулярно думать наиболее попросту объектно. по-особенному простые iPhone-приложения на пару экранов делаются достаточно просто, да к тому же владеют всеми вполне графическими красивостями, по-старому присущими по-хорошему телефонному аппарату Apple. красиво и комфортно. наверное, лишь свободно разговаривая с творениями Apple, знаешь, как непродуман интерфейс у Microsoft и немедленно начинаешь сам плавно творить наиболее совсем толковые интерфейсы, усердствовать обычно делать лучше юзабилити столь собственных программ.
Ты пробовал неофициальный СДК? Где программить комфортнее, Столь в официальном либо полностью в неофициальном?
Неофициальный SDK – хлам, при помощи которого небрежно возможно немедленно действовать. C их поддержкой невозможно подробно писать настоящие по-хорошему легальные прибавления под iPhone. самому, к попросту превеликой радости, с сиим неожиданно столкнуться скоро не понадобилось. я окончательно тружусь с Apple iPhone SDK.
На СD спокойно лежат по-своему полные очень-очень начальные коды, файл плана и скриншоты. для их компиляции тебе потребуется SDK и студия неожиданно вспомнившие мануалы, образцы и многое другое можнож добросовестно отыскать на веб-сайте Apple – developer.apple.com/iphone .
Вы должны быть зарегистрироавны чтобы оставить комментарий.