Пользователь
0,0
рейтинг
27 апреля 2011 в 01:41

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

«Под Windows можно писать для iPhone?»
Анонимный разработчик


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


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

Как заработать?


Платные приложения в AppStore — от $0,99 до $999,99

Тут все очень просто/сложно. Пишете приложение, выкладываете в AppStore, выставляете цену, получаете деньги от довольных покупателей. 30% процентов от цены забирает Apple. Есть шанс как захватить мир, так и попусту потратить свое время — все зависит от вас.
Верхняя планка цены реальна — в AppStore было уже как минимум два приложения за тысячу долларов:
«BarMax CA» — приложение для студентов-юристов;
«I Am Rich» — приложение, показывающее изображение красного, видимо, драгоценного камня. Из магазина оно было убрано через день после публикации, но 8 счастливчиков все-таки успели его приобрести. Сейчас оно вернулось в AppStore уже с ценой в 10 долларов, одной из фич указано, что приложение продается всего за 1/100 от оригинальной цены.

Реклама в приложениях — iAd

Тут тоже все достаточно прозрачно: размещаете в своем приложении рекламный баннер, Apple делится с вами выручкой за показ рекламы и за клики по баннеру. На хабре уже писали об этом сервисе и даже рассказывали как добавлять баннеры в свои приложения. Остается добавить, что стоимость рекламы 1 цент — за показ, 2 доллара — за клик. Разработчик получает 60 процентов от вырученной суммы.

Торговля в приложении — In-App Purchases

Apple предоставляет возможность торговать вам в своих приложениях различными житейскими ценностями — ресурсами в играх, доступом к заблокированным секциям приложений и так далее. Отличная статья на эту тему есть на хабре — iPhone разработка: Интегрируем In-App Purchases. Да, Apple забирает себе положенные 30 процентов выручки.

Сервис подписок

Тем, кто в детстве выписывал «Мурзилку», должна быть понятна суть этого варианта заработка. Обычная подписка на журналы, газеты, музыку, видео… Издатель устанавливает цену, Apple берет себе стандартные 30 процентов. Сервис был запущен 15 февраля 2011 года, подробности можно почитать в официальном пресс-релизе.

Разработка приложений под заказ

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

Последний путь заработка наиболее прост в плане оплаты работы. Так как все происходит по обычной схеме, без финансовых отношений с Apple (кроме платы за регистрацию). В остальных случаях необходимо озаботиться вопросами получения заработанных денег. Комментарии с положительным/отрицательным опытом по данному вопросу приветствуются.

Как зарегистрироваться в iOS Developer Program


У вас есть два пути:

Разница между ними в следующем: при участии в Enterprise программе вы не можете, в отличие от обычной программы, выкладывать свои приложения в AppStore, зато можете разрабатывать in-house приложения — приложения, для внутреннего использования в своей компании, без открытого доступа. Если вы решите разрабатывать in-house приложение для своих клиентов, то им рекомендуется вступить в эту программу. В центре поддержки iOS Developer Enterprise Program поясняется этот вопрос (последний вопрос в списке)

В остальном, программы дают одинаковые возможности:
  • доступ к инструментам разработки и SDK (включая beta-версии);
  • доступ к Apple Developers Forums;
  • доступ к обучающим ресурсам (программы-примеры, статьи, видео);
  • возможность использовать Ad Hoc для распространения приложений;
  • возможность тестировать свои приложения на iPad, iPhone, iPod-touch;
  • возможность получать техническую поддержку.

Небольшое замечание по Ad Hoc — это способ распространения приложений без AppStore, прямой установкой файла-сборки приложения через iTunes. И тут возникает вопрос: чем это отличается от тех in-house приложений, которыми манит нас Enterprise программа? Тем, что в стандартной программе вы можете зарегистрировать в год не более 100 устройств для установки на них своих приложений, то есть ни о каком коммерческом распространении тут речь идти не может. Более того, Ad Hoc распространение ориентированно в первую очередь на тестирование продуктов — программы, установленные таким образом, могут работать на устройствах только в течение 6 месяцев.

При регистрации вы можете регистрироваться либо как компания, либо как индивидуальные разработчик.
При регистрации компании нужно быть готовыми предоставить определенные документы.
Для Российских компаний нужно предоставить выписку из Единого Государственного Реестра Юридических Лиц (ЕГРЮЛ) и ее перевод. Название компании при регистрации должно совпадать с названием в выписке. В этой статье можно подробнее узнать о регистрации компании — Регистрация приложения в AppStore — мы сделали это!
Обычно вся процедура регистрации занимает 3-4 недели.
Куда проще регистрироваться индивидуальным разработчикам — после заполнения всех форм на сайте попросят распечатать, заполнить документ-заявку (требуются паспортные данные, данные карточки, адрес проживания и т.д.) и отослать факсом в Apple. После рассмотрения этого документа Apple списывает с вашего счета 99 долларов и вы становитесь зарегистрированным разработчиком. Вся процедура занимает 3-4 дня. Если у вас возникли проблемы с поиском факса, то можно воспользоваться каким-нибудь online-ресурсом, например — www.myfax.com/free

Обязательно ли нужен Mac?


Вам обязательно понадобится Mac OS X, так как ни на какой другой платформе вы не сможете работать с iOS SDK. Есть много различных вариантов разработки iOS приложений, но минимум для сборки и загрузки приложения в AppStore вам будет необходима Mac OS X. Да, последнее время появляются различные сервисы, которые и пирожки за вас есть будут предлагают постить приложения за вас и различные другие услуги, и о них на хабре тоже писали. Но, на мой взгляд, все это пока несерьезно и пользоваться услугами подобных контор, при разработке сколько-нибудь значимого приложения не стоит. Хотя, конечно, все зависит от задачи, если вы сможете зарабатывать, используя подобные сервисы, то почему бы и нет:)

Способы заполучить Mac OS X:
  • купить Mac (спасибо, Кэп!)
  • hackintosh.com
  • виртуальная машина

Mac mini сейчас вполне доступная вещь, хотя, конечно, всегда хочется большего, а там цены у Apple уже начинают кусаться.
Относительно двух других вариантов: я слышал отзывы людей, которые вполне счастливы с хакинтошем или с Mac OS X на VMWare, но и отрицательного опыта тоже накоплено достаточно. Тут все зависит от железа, прямоты рук и вашего желания.
В целом, если вы хотите разрабатывать под iPhone, операционная система препятствием стать не должна.

Разница между web и native приложениями


Хочу пояснить разницу между native и web приложениями для iPhone/iPad, пока мы не перешли к инструментам разработки. Первые распространяются через AppStore (или in-house приложения), вторые — всего лишь web-сайт или его часть, специальным образом сконфигурированный под iPhone.
Доступные web-приложения можно посмотреть тут — www.apple.com/webapps
Для публикации своего web-приложения в этом каталоге необходима регистрация в iOS Developer Program. При публикации вас просят указать url приложения и некоторую дополнительную информацию (сайт компании, загрузить иконку и так далее).
Как понимаете, каких-то особенных, отличных от обычных инструментов web-разработчика для написания таких приложений не нужно, хотя сейчас развелось довольно много фреймворков, позволяющих упростить создание подобных приложений и сделать их больше похожими на native приложения.
Среди пользователей iДевайсов web приложения особенной популярностью не пользуются, а многие, по крайней мере в России, даже и не подозревают о них. Так что дальше будем рассматривать только вопросы разработки нативных приложений.

Какие инструменты можно использовать для разработки?


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

Нативные средства разработки

Это прежде всего язык Objective-C и среда разработки Xcode (за компанию с Interface Builder, iPhone симулятором и другими приложениями из пакета разработчика). Еще можно писать на C и C++, но без Objective-C вам в некоторых моментах будет все-таки не обойтись.
На хабре довольно много статей об этом языке — стоит только пролистать блог Разработка под Apple iOS . У Objective-C есть определенный шарм (хотя на этот счет высказываются различные мнения), он немного сложен в начале освоения, -парадигма, унаследованная от Smalltalk дает о себе знать — но потом затягивает.
Основной аргумент в пользу использования инструментов от Apple — нативные средства разработки при прочих равных в любом случае дадут на выходе код быстрее и качественнее, чем любые другие инструменты.
Недавно JetBrains анонсировали свою среду разработки для Objective-C — appCode (жаль, что они оказались от супер-названия CIDR — одна компания, имеющая продукт с названием Cider, попросила их не использовать похожую аббревиатуру), так что даже тут появится выбор. Конкуренция, надеюсь, приведет к повышению качества.

MonoTouch

monotouch.net
MonoTouch позволяет разрабатывать приложения для iДевайсов на C#. Ощутимый минус для .NET разработчиков цена — $399 за индивидуальную лицензию.
Что привлекает меня в этом пути: в связке с Mono for Android можно потенциально покрыть довольно большой сегмент мобильного рынка (iOS/Android/WP7), без больших изменений кода.

Flash

Adobe Flash Pro CS5 поддерживает разработку под iPhone. Другое дело, что пока этот путь основательно не разработан и определенная сырость в подходе присутствует.

Titanium & PhoneGap

www.appcelerator.com
www.phonegap.com

Два фреймворка-хэдлайнера в мобильной кроссплатформенной разработке. Краткое описание можно найти в этой статье. Позволяют использовать javascript и HTML5 для разработки native приложений сразу под несколько платформ, в том числе и iOS.

Unity3D

unity3d.com
Отличное средство для разработки игр. Поддерживает множество языков и платформ. Но за все хорошее надо платить — лицензия на Unity Pro стоит $1500 плюс $400-$1500 нужно будет отдать за аддон для разработки под iOS.
Подробнее цены посмотреть можно тут — store.unity3d.com/shop
Сравнение возможностей различных лицензий тут — unity3d.com/unity/licenses

Для себя я пока выбираю Xcode и Objective-C, но пристально смотрю в сторону кроссплатформенной разработки.

Еще одно небольшое замечание, если вы решитесь разрабатывать приложения под заказ
Deadline

Срок сдачи работы не всегда зависит от вас. Перед появлением в AppStore приложение проходит ревью, которое длится минимум 5 дней. Если приложение было отклонено по каким-либо причинам, то, после внесения изменений, необходимо будет отстоять всю очередь снова. Так что обещать клиенту выпустить приложение в AppStore к определенной дате, если у вас нет в запасе двух-трех недель, — поступок довольно безрассудный. Лучше обещайте показать приложение на устройстве к оговоренному сроку и объясните ситуацию с ревью. Для установки приложения на устройство нужно знать его UDID. То есть, даже если вы работаете удаленно, то вы всегда можете собрать приложение и отправить заказчику, чтобы он посмотрел его на своем девайсе.

Спасибо, что прочитали статью!

Dmitry Khryukin @BurundukXP
карма
90,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (87)

  • +2
    Спасибо за статью. Все четко, доступно и в меру. Задумываюсь в последнее время о начале разработки под iOS, так как Android местами не радует:)
  • –9
    >Adobe Flash Pro CS5 поддерживает разработку под iPhone.
    Это уже не работает, в плане того что Apple окончательно запретило публикацию таких приложений.

    По Unity ценовая политика тоже указана неверно.
    • +2
      по Flash: буквально полтора месяца назад мы с нашим flash-разработчиком занимались этим вопросом и никаких препятствий не нашли. можно пруфлинк на запрет, если что-то изменилось за это время? — подкорректирую статью.

      по Unity: store.unity3d.com/shop/

      спасибо за замечания!
      • –9
        Статья не нужна. Часть инфы это копипаст документов от Apple, а остальная часть это устаревшая информация. Unity3d под iOS стоит от 400$.
    • +4
      Adobe AIR 2.6 позволяет паковать приложения под iOS 4.3+ и никаких ограничений нет. Apple, наоборот, разрешило использование такого подхода, внеся правки в какое-то там лицензионное соглашение, которое раньше это запрещало.
      • –4
        Сначала разрешило, а потом запретило совсем и это есть в текущих правилах публикации. Запрет был поставлен где-то около месяца назад если не ошибаюсь.
        • +1
          А потом снова разрешило — читайте новости чаще. Adobe не просто так выпустили AIR 2.6 с поддержкой компиляции под iOS.
          • –2
            Ну попробуйте сейчас опубликовать что-то на флеше, я на вас погляжу=)
            • 0
              Не вижу никаких проблем, в ближайшее время в AppStore появятся приложения, собранные с использованием AIR 2.6, как вы их будете отличать от нативных я не знаю.
              • +1
                Легко — по тормозам. А отличить их тем кто проверяет вообще раз плюнуть.
  • +5
    Когда у меня возникла задача отправить факсом заполненную формочку, я немного встал в ступор. Факс аппарата не было, факс-модем потерял и не имел информации о каких либо факс сервисах. После гугления решил попробовать вот это — www.myfax.com/free/ — через пару дней мой аккаунт успешно активировали.
    • +3
      А мы просто на мыло им все отослали, и так же все отлично прошло.
      • 0
        А на какой адрес слали?
        • 0
          devenroll@apple.com
          Совсем недавно продляли, отослали туда же. Но нам надо было срочно убедится что все нормально продлится, позвонили на их номер поддержки в Ирландии и там девушка нашла мыло и сказала что переправит куда надо. Хотя и без этого наверно было бы все хорошо.
          • 0
            Спасибо!
          • 0
            Скажите, а вы в какой форме мыло отправляли? Plain text или PDF вложение или еще что?
            Каким образом им заполненную форму отправлять?
            Спасибо.

            P.S. А то по фрифаксу как-то стремновато светить неизвестно кому свои данные карточки и т.п.
            Не безопасно ни разу.
            • 0
              Мы отправляли скан картинкой + в тексте письма рассказывали что факса у нас нет, и вот мол мы решили так и так.
              • 0
                Спасибо!
                • 0
                  Пожалуйста :)
    • 0
      спасибо за опыт:) добавлю в статью
    • 0
      Фантастика. Хорошо что не надо высылать саму программу на дискетах.
  • +2
    Про сдачу клиенту: полезно добавить, что можно не просто показывать приложение на своем устройстве, а передавать его заказчику, собрав под конкретно его устройство — для этого нужно знать UDID устройства заказчика. Всего можно до 100 устройств так охватить.
    • +1
      100 UDID на один ак на всю жизнь или 100 UDID в год на один ак? То есть после продления подписки список добавленных UDID обнуляется?
      • 0
        100 UDID на один аккаунт, можно добавлять/удалять в любой момент. После добавления UDID нужно обновить Provision Profile и пересобрать приложение под ним.
        • 0
          Насколько я помню, существует ограничение в 100 UDID на аккаунт в год. Исчерпав весь лимит за год, новых не добавишь.

          Кроме того, приложения, добавленные таким образом, через некоторое время «протухают» — вроде как срок составляет 3 месяца.
    • 0
      действительно, из статьи это не очевидно, хотя должно быть:) сейчас добавлю. спасибо за замечание.
  • +1
    Спасибо за статью!
    Возник вопрос, может подскажете: хотим опубликовать книгу для iPad. Надо ли для этого регистрироваться как разработчику, или там используется другой механизм?
    • +1
      Тоже озадачился вопросом публикации книги. Есть iBookstore, но для регистрации нужен номер налогоплательщика США. Получается, что нам туда доступ пока что закрыт
      • 0
        Спасибо за наводку. Сейчас изучаю правила получения EIN, кажется, что его можно получить и иностранным гражданам.
        Нашел видеоинструкцию www.youtube.com/watch?v=8c9GXc8yVoA там вроде ничего не говорится о том, что надо быть резидентом. И вот некоторые ответы кажется это подтверждают www.createspace.com/en/community/thread/2842
        Так что может быть и из РФ можно его получить. Правда кажется для этого все -же надо быть юрлицом( зарегистрирваться как ИП)
        • 0
          Но тогда получается — если продавать книгу то ИП должен иметь валютный счет и т. п. Стоит ли овчинка выделки?
      • +1
        Поиск рулит… оказалось что на хабре был уже соответствующий топик.

        UPD 2: По поводу EIN стоит уточнить — Я с Украины, может быть это именно для Украины не требуется EIN. Просто не хочу вводить хабраюзеров в заблуждение. А получить его очень просто, не надо никуда слать факсы, проще всего это позвонить на известный номер в американскую налоговую, и в телефонном режиме получить его на 5 минут. Реально у меня так и было. В начале парился с факсами, а потом позвонил, и понял что даром форму заполнял. Хотя заполнить стоит, потому что вопросы оператор задает по ней. Заполнить только для того, чтобы была шпаргалка перед глазами.

        Значит все существенно упрощается…
    • +1
      публикацией книг никогда не занимался, но в AppStore множество приложений-книг.
      например — itunes.apple.com/ru/app/id391324103
      То есть, по сути, вам можно будет просто создать приложение с контентом вашей книги. Для этого потребуется стандартная регистрация, как для любого другого приложения.
      • 0
        Этот вариант понятен. Спасибо. Чуть выше стало обсуждаться получение EIN для публикации в iBookstore, нужно ли его получать разработчику? Если да, то поделитесь опытом получения пожалуйста.
        • 0
          к сожалению, тут ничем не могу помочь — никогда не занимался подобными вопросами.
  • 0
    Вы пишете:
    >при участии в Enterprise программе вы не можете, в отличие от обычной программы, выкладывать свои приложения в AppStore, зато можете разрабатывать in-house приложения — приложения, для внутреннего пользования каких-либо компаний, без открытого доступа.

    Хотя, на сайте Apple явно написано:
    > Distribute your proprietary, in-house iOS apps to employees or members of your organization.
    Вы уверены, что вы не вводите людей в заблуждение?
    • 0
      да, вы правы. последний вопрос в этой ветке — developer.apple.com/support/ios/enterprise.html это подтверждает. сейчас поправлю, спасибо.
      • 0
        Стоит отметить, что даже если мы по standard распространяем программу по Ad-Hoc, через полгода она протухнет (Ad Hoc mobile provision profile expires every 6 months)…
        • 0
          да, верно — профайлы временные. решил не писать об этом, чтобы не перегружать статью непонятными терминами:) — про профайлы вообще, думаю, нужно отдельно написать, так как в начале, люди часто путаются что к чему, если внимательно не прочитают Program User Guide
          • 0
            Вообще стоит, мне кажется.
            • 0
              ок, отметил, но без лишних непонятных новичкам терминов:) спасибо.
        • 0
          Распространять программу по Ad-Hoc не стоит, потому что этот режми предназначен только для тестирования, а не для распространения.
          • 0
            Не спорю, но это помогает временно решить проблему без enterprise.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    1. Кажется, Вы упустили очень важный момент для российских разработчиков: процесс получения денег. Поэтому перед тем, как писать под iOS с целью заработка, необходимо заранее увериться в том, что этот вопрос проблем не вызовет. Иначе можно потратить время впустую.
    2. Для регистрации компании в iOS из официальных документов нужна только выписка из ЕГРЮЛ, ее перевод. Нотариус не нужен.
    • +1
      1. Да, тут возможны трудности, — буду рад, если поделитесь опытом, так как для себя пока выбрал последний вариант заработка — разработка приложений под заказ. Тут с получением денег все достаточно прозаично:)
      2. Вы правы — сейчас достаточно только ЕГРЮЛ и копии. поправлю. спасибо.
      • 0
        У меня пока такого опыта нет (но должен скоро появиться), только теория и предположения. Поэтому было бы неплохо, если бы Вы в статье отметили этот неоднозначный момент. Возможно, кто-то действительно знающий расскажет особенности получения денег в РФ.
        В частности, в рунете слабо освящен вопрос налогообложения организаций при работе с Apple.
        • +1
          ок, сейчас отмечу. возможно, кто-нибудь с положительным-отрицательным опытом оставит свои комментарии.
      • 0
        1. вопрос еще актуален? :)
    • 0
      Про 2. Я не регистрировал company, но разве там достаточно выписки из ЕГРЮЛ? на сайте пишут про Dun & Bradstreet (D-U-N-S number)
      • 0
        Его довольно просто получить, достаточно заполнить короткую анкету.
        • 0
          Да, я читал об этом.
          Я к тому, что это тоже стоит отразить, если уж писать подробно :)
          • 0
            «Ах, как было бы хорошо», если бы отразили подробнее! Мы протра… сь 3.5 месяца, чтобы зарегать нашу контору. Вот ссылка на детальный пост о граблях и советах как на них не наступить.
      • +1
        Автор в статье дал ссылку на статью от Эльбы об их опыте регистрации: habrahabr.ru/company/skbkontur/blog/113824/
    • 0
      Подскажите, пожалуйста, Apple подтверждает какими-то документами факт оплаты им 99 долларов?
      • 0
        да, высылают на почту документ «INVOICE RECEIPT» — такой же, как и при любой покупке в AppStore.
  • 0
    Как всегда чтоб похвалить objc упоминают какойто малопонятный «шарм». Вот только язык древний, неконсистентный, инструменты разработки банально отстойные.
    На нем конечно можно писать, без проблем, сам пишу, но «шарма» в этом никакого нет.
    • +2
      это ведь все достаточно субъективно:) у меня лично такое отношение к Objective-С. а в каких-то языках я не вижу той прелести, о которой пишут другие.
      • –2
        Да нет. Это достаточно обьективно.
        objc обьективно отстоен. Так как простые вещи на нем делаются через задницу.
        objc может нравиться только если программист не писал никогда на более современных языках — C#, Java, AS3 etc.
        • +1
          не поверите, но на Objective-C я начал писать после трех лет программирования на C# (и сейчас продолжаю работать с .NET платформой). да, это очень разные языки. что говорить, C# — куда более мощный язык. тем не менее Objective-С мне нравится.
          • 0
            Чем???
            Тем что не смотря на свой более низкий уровень (имею ввиду отсутствие байт кода — ближе к железу) он медленнее C#??
            Тем что каждая конструкция получается в несколько раз длиннеееее?
            Тем что нет рефакторинга?
            Тем что в масив при инициализации на запихнеш nil?
            Тем что нет дженериков, да хоть типизированых масивов ито нет?
            Тем что иногда компилятор выдает абсолютно несуразные ероры? (Confused by earlier errors bailing out — единственный еррор в проекте — как такое понимать?)
            Тем, что название каждого аргумента надо повторять: повторять 4:4 раза: раза?
            Тем что для нормальной работы всеравно прийдется всеравно мешать objc c++ и c? Фактически одновременно писать на 3х языках с разными парадигмами.
            Тем что, не говоря про аналог LINQ или е4х, в базовых библиотеках нет даже нормльного ХМЛ парсера?

            Можно продолжить еще пару сотен пунктов. Но где в этом шарм?

            • 0
              я не сравниваю его с С#. что мне понравилось во время первого знакомства с Objective-C — это использование парадигмы Smalltalk. отличной от того, с чем я работал ранее. Не из-за того, что это как-то удобно или дает в чем-то выигрыш, симпатия больше эмоциональная, чем рациональная.
              • –1
                А почему не сравниваете? Я, например, сравниваю, и в сравнении с C# он во всем хуже и нивчем лучше.
                Парадигма Smalltalk — это что? Динамический линкинг метода по имени? Это какбы очень много где есть и реализация в objc этого тоже довольно таки отстойная.

                А эмоциональная привязаность к языку программирования — это извращение какоето. Язык — инструмент. Инструмент должен помогать работать. И должен делать это хорошо. objc делает это плохо.
                • 0
                  сравниваете и до сих пор пишете на Objective-C — по какой причине?
                  • 0
                    пишу игру на ифон и ипад. www.youtube.com/watch?v=ptdTdJarWLw
                    Писал бы на монотач, но когда начинал он был еще слишком слаб.

                    • 0
                      Симпатичная игрушка. Но многое зависит от дизайна уровней, мне кажется.

                      А скоро выйдет?
                      • 0
                        Спасибо. Скоро — надеюсь в следующем месяце.
                    • +1
                      игрушка классная, атмосферная (да и название отличное — у меня нетбук зовут Petit Monstre:)). Но почему вы сейчас не переходите на monotouch? Думаю, не из-за денег. А из-за наработок и опыта. И задачи определенные вам сейчас, скорее всего, быстрее и проще решить на Objective-C. То есть для определенного класса задач Objective-C язык более уместный, чем C#.
                      Когда я начинал, все ненативные средства разработки были запрещены Apple. Тоже был не в большом восторге от Objective-C. Но выхода не было. Работу нужно было делать. А если свою работу не любить — то лучше ей не заниматься. Вот и полюбил:)
                      Да и всегда полезно «расшаривать грабли» (с) — изучение других языков в этом плане очень полезно.
                      • 0
                        На монотач перейду как только он будет готов. Брать сейчас и переписывать весь проект просто так — глупо.

                        Работу я люблю, но это не значит, что я должен любить objc.
                        Чтоб не спорить нипрочто — вы очень романтизируете objc, и тот кто прочитав статью будет на нем писать будет ждать какогото «шарма» итд.
                        А прагматичное мнение про objc — «это отстой, но писать можно».

                        • 0
                          ок. думаю, те, кто сильно заинтересуется, прочтут не только статью, но и комментарии к ней. и уже дальше будут думать своей головой.
            • 0
              Тут, кстати, можно спорить — например, по поводу именованных аргументов (кажется, в C# они тоже появились), можно сказать, что XCode 4.1 стал удобнее (и сообщения об ошибках у него куда более правильные), можно поинтересоваться, чем нетипизированные массивы не угодили, но мне просто интересно, зачем запихивать в массив nil? чтобы показать, что он пустой?

              Рефакторинг, кстати, какой-никакой, но есть:

              • 0
                Насчет именованных аргументов даже спорить нечего. В C# это named and OPTIONAL arguments. это синтаксический сахар который сокращает код. И можно метод с 5ю аргументами вызвать указав только один. В objc это вобще непонятно что, но код удлинняет порядочно.
                XCode 4.1 стал лучше, но всеравно отстой.

                ЫЫЫ? Чем не угодили нетипизированые массивы? Это понимать как шутку? Какбы обяснить попроще. Типизированые массивы позволяют избежать многих ошибок на этапе компиляции. Также как и всякая строгая типизация.

                >зачем запихивать в массив nil? чтобы показать, что он пустой?
                Еще одна шутка? пустой массив — массив без элементов. Массив с 1 элементом nil — это массив с одним элементом nil.
                А массив с 5ю элементами 2 из которых nil — это масив с 3мя обьектами и двумя nil-ами.
                И nil в objc в массив запихивать можно, без проблем, но не при инициализации. А почему?

                Рефакторинг НИКАКОЙ. Это насмешка, а не рефакторинг. И для objc++ он просто отключен.

                • +1
                  Это вечный флейм — «типизированные vs нетипизированные языки». Я, например, уверен, что утверждение «строгая типизация спасает от ошибок» — большой миф. А вот мешать — мешает.

                  Все же, зачем в массив класть nil?

                  Рефакторинг (я написал «какой-никакой», заметьте :-) для Obj-C включен. Я только что сделал скриншот.

                  • +1
                    (что смешно, если есть строгая типизация — сразу появляется система приведения типов («а давайте-ка через void * все сделаем!»), запутывающая код еще больше и сводящая на нет все преимущества строгих типов).

                    Лично мне куда ближе идея о том, что все является объектами (и нет примитивных типов; увы, это про Smalltalk, но не про Obj-C); плюс эти объекты обмениваются сообщениями (и если объект понимает сообщение — пофиг, какой у него тип).

                    Но, честное слово, не хочется тут раздувать этот флейм.
                    • +1
                      Это не вечный флейм. Есть задачи, которые лучше решать на нетипизированых языках, есть случаи когда типизированые лучше.
                      От только проблема — objc в обоих случаях проигрывает. А теже например, C# и AS3 используют обе парадигмы без проблем.

                      >Все же, зачем в массив класть nil?
                      Если честно вопрос очень глупый. Простенький пример — вывожу в таблицу числа из массива. первая строка должна быть 1, вторая 0, третья пустая, а 5я 4.
                      Вот этой пустой строке и отвечает nil.

                      Как мы сделаем такой массив в objc. Проинициализируем его 3мя елементами, потом запихнем nil, потом еще оин елемент.
                      И это не все — каждый елемент обернем в NSNumber. А зачем? А затем что в objc нет авто боксинга. айайай.

                      >а давайте-ка через void * все сделаем
                      бред какойто

                      > ближе идея о том, что все является объектами
                      а это тут при чем?

                      Чтоб закрыть эту дискуссию
                      NSMutableArray* array = [NSMutabbleArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];
                      [array addObject:nil];
                      [array addObject:[NSNumber numberWithInt:5]];

                      VS

                      int?[] numbers = new int?[5] {1, 2, 3, null, 5};

                      Разве после этого можно говорить, что objc не уебищный?
                      • +3
                        The NSNull class defines a singleton object used to represent null values in collection objects (which don’t allow nil values).

                        NSMutableArray *a = [NSMutableArray arrayWithObjects: @«A», [NSNull null], @«B», nil]; вполне себе работает. Не пользовались?

                        Про конвертацию в NSNumber согласен (а все от того, что примитивные типы оставили. Ну что ж делать, пытались скрестить ежа с ужом)
                        • 0
                          За NSNull спасибо, не знал. Костыль конечно, но лучше чем ничего.
                          NSNumber не от того, что оставили примитивные типы. Другим языкам это не мешает.

                          Вообще многие проблемы софта от того что пробуют скрестить ежа с ужом. И называют по умному legacy support.
                          Но они не перестают от этого быть проблемами.

                • 0
                  допилят appCode — будет рефакторинг по полной программе:)
  • +1
    Отличное краткое саммари, открыл для себя даже что-то новое. Спасибо!
    • 0
      вам спасибо за фидбэк. приятно читать:)
  • +2
    Из личного опыта добавлю просто. Начинал с того, что абсолютно не знал специфику Маков. Но была конкретная задача (ТЗ, которое получил на собеседовании). Несколько дней разбирался с тем, что нужно, чтобы начать. В итоге, пришел к выводу, что намного целесообразнее поднять МакОсь на виртуальной машине. Заняло немало (относительно) времени. Затем первое внедрение в Objective-C было немного неуютным, но потом потихоньку разбирался. Зная только базово Java, для меня было весьма неудобно удалять все вручную, а еще эта «система делегатов»… В конце концов, написал приложение, но с использованием большого количества быдлокода и, в некоторых местах, полным непониманием того «что я делаю». И тем не менее, исходник с гордостью держу у себя на диске и даже не удаляю виртуальную машину, чтобы, в случае чего, показать потомкам :)
  • +1
    Советую: Не используйте Titanium. Сложного вы все равно ничего не напишете, а простое будет проще написать два раза.

    Я работал с Titanium несколько месяцев, в разработке не очень большого приложения. Поначалу все было норм, но когда мы перешли к не совсем элементарным вещам, мы поняли что надо писать два приложения одно на Titanium для Андроида, а второе тоже на Titanium но для iOS. Для того что бы хоть что-то успеть к сроку мы в конце концов отказались от поддержки Android.
    И получилось: 4 человека потратили больше 4х месяцев на разработку кросплатформенного не очень сложного приложения которое работало только на iOS. И работало не очень стабильно.
    • 0
      спасибо за совет!
  • 0
    Вперед кодить! :)
  • 0
    Не нашел в этой статье информации.
    При регистрации в iOS Enterprise Developer Program есть ли ограничение по количеству устройств при распространению через Ad Hoc?
    • 0
      ограничения нет.
  • 0
    Ваша ссылка www.apple.com/webapps не ведет в каталог :(
    • 0
      годы идут… видимо, убрали или изменили URL. если подскажете новый, подредактирую статью. быстрый поиск в google мне не помог.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.