Программирование iPhone - впечатления, мнения?

Я много лет программировал на C, C++, C# и некоторых других языках, в основном для Windows и Linux, а также для встраиваемых платформ. Недавно начал заниматься программированием для iPhone в качестве побочного проекта, поэтому я впервые использую платформы Apple со времен Apple II. Мне интересно, что думают другие разработчики, которые переходят на Mac OSX, Xcode и iPhone SDK. Вот мои впечатления на данный момент:

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

  • Xcode: не так хорош, как VisualStudio или Eclipse, две среды, с которыми я знаком. Я думаю, что мог бы привыкнуть к этому, но мне интересно, не будет ли Apple лучше с Eclipse. Прежде чем я нашел настройку, в которой все окна склеены, я ненавидел ее, теперь я могу ее терпеть.

  • iPhone SDK: действительно странно. Я понимаю желание Apple контролировать свою среду, но в наши дни это кажется немного неряшливым, и они так много упускают, разрушая репутацию разработчиков.

  • Objective-C: Я знал об этом много лет, но даже не взглянул на него. Синтаксис отталкивает, но на самом деле я очень заинтригован языком. Я думаю, что это интересное третье звено между C++ и C#, оба из которых мне очень нравятся. Есть ли шанс, что Obj-C вырвется из песочницы Mac из-за роста популярности технологий Apple?

Любопытно читать ваши мысли,

Андрей


person Andrew Queisser    schedule 19.09.2008    source источник


Ответы (7)


Я в той же лодке, что и вы (несколько). Я занимаюсь разработкой на C# уже 7 лет, начиная с .NET 1.0. За последние пару недель я изучил Cocoa и Objective-C. Вот мои впечатления (примечание за примечанием с вашими)

  • Согласитесь, что беспорядок может быть проблемой. Я склонен активно использовать пробелы при разработке в XCode (поместить XCode в одно пространство, Interface Builder в другое пространство, инструменты в третье пространство). Если у вас нет Leopard (и, следовательно, нет пробелов), используйте Command-H, чтобы скрыть активное окно. Использование этого, как правило, немного очищает вещи (однако было бы неплохо, если бы вы могли автоматически управлять текущим окном командой-h при переходе в другое приложение).

  • Мне все больше и больше нравится XCode. Я ненавижу Visual Studio — я считаю ее нестабильной, медленной и ну, ну, просто паршивой IDE. Сравнительно я нашел XCode быстрым, стабильным, и мне нравится, как он организует и фильтрует ваши файлы. Я не слишком разбираюсь в своих ярлыках XCode, но я надеюсь, что есть способ быстро переключаться с одного класса на другой (аналогично сочетанию клавиш ctrl + n в ReSharper). Intellisense мог бы быть лучше в отношении того, как он отображается для пользователя, но мне очень нравится, как он по существу создает шаблон, и вы можете нажать Ctrl + /, чтобы перейти к следующему аргументу в сообщении.

  • Я ненавижу документацию в XCode. Справочная система отстой, и по какой-то причине она никогда не находит то, что я ищу. В итоге я просто ищу в Google все, что мне нужно знать... Я надеюсь, что они улучшат документацию. Это моя самая большая проблема сейчас.

  • Еще не все, так как я просматриваю полную структуру Cocoa для настольных компьютеров Mac. Пока мне очень, очень нравится то, что я вижу. Скажу одно: было бы неплохо, если бы iPhone SDK разрешал сборку мусора...

  • Objective-C — я никогда не использовал его, это мой первый набег на него. Сначала меня немного сбил с толку синтаксис и квадратные скобки для обмена сообщениями, но это меня действительно заводит. Так быстро можно просмотреть метод и увидеть вызовы сообщений, которые делает этот метод. Чем больше я его использую, тем больше мне нравится Objective-C... однако шаблоны/дженерики были бы долгожданным дополнением к языку.

В общем, мой набег на разработку для Mac был приятным, и я очень рад начать работать (сегодня! Ура!) над некоторыми реальными проектами для Mac/iPhone.

person cranley    schedule 19.09.2008
comment
Что касается переключения классов: лучшее, что я нашел, это Cmd-Shift-D (я думаю) — быстро открыть файл (это в меню «Файл»). Открывает окно, в котором вы можете ввести имя файла, и оно автоматически заполнится для вас. Не идеально, но лучше, чем с помощью мыши. - person Andy; 03.02.2009

Я согласен с вашими чувствами. Переход от инструментов разработки Microsoft (и eclipse) к XCode довольно суров. XCode просто кажется... незаконченным в некоторых отношениях. У него определенно нет той полировки, которую я ожидаю от VS и Eclipse.

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

Однако Objective-C великолепен. Мне очень нравится этот язык, несмотря на его причуды и особенности (сообщения для null не являются исключением во время выполнения? Правда?). Как только ваши глаза C++ привыкнут к синтаксису, обмен анонимными сообщениями со свободной типизацией на самом деле оказывается действительно классным для игры. с (если это несколько опасно и склонно к RTE.)

person David Hill    schedule 19.09.2008
comment
Мне, например, очень нравится тот факт, что отправка сообщений на null ничего не делает. Это устраняет необходимость в большом количестве шаблонов, это ноль? условия. - person SilverWolf; 07.11.2017

Я действительно хочу запрыгнуть и начать разрабатывать приложения для iPhone. Я немного занимался разработкой для Motorola, Blackberry и Windows Mobile, и все они были крутыми и легкими в использовании, с хорошей документацией, легким доступом и установкой SDK. Пока что я чувствую, что Apple немного элитарна в том, что кажется, что их среда разработки доступна только на Mac. Мне также не совсем нравятся их концепции лицензирования. Если вы хотите иметь возможность фактически публиковать приложения, вам нужно пройти через них, и они будут иметь последнее слово в том, можете ли вы или нет, и считается ли ваше приложение приемлемым для работы на их превосходном продукте. Я считаю, что они усложняют сообществу открытого исходного кода поддержку и создание приложений или новичкам в области iPhone, таким как я, даже начать писать приложения для этих продуктов. О Microsoft говорят много плохого, но я должен сказать, что они выпускают свои API и SDK задолго до того, как их продукты появятся на рынке, и действительно поощряют программистов всех уровней копаться в них и участвовать в написании приложений для своих фреймворков и операционные системы.

person stephenbayer    schedule 19.09.2008
comment
Я согласен с вашими настроениями в App Store... Я надеюсь, что когда Android будет выпущен, Apple будет вынуждена ослабить свою монополию на распространение приложений для iPhone... - person cranley; 19.09.2008

Я работал над несколькими небольшими приложениями для iPhone и просто поражен тем, что они не включали компоненты фреймворка, позволяющие разработчикам легко получать доступ к веб-сервисам SOAP. Кто-нибудь еще, работающий в корпоративной ИТ-среде, чувствует боль?

person Smallinov    schedule 19.09.2008

Лично я считаю, что документация на данный момент очень хороша. В любом классе Objective C вы можете дважды щелкнуть по опции, чтобы открыть документацию для этого термина, и если есть какие-либо примеры проектов, использующих этот конкретный класс, который указан в списке (по крайней мере, для многих конкретных классов iPhone).

Также попробуйте включить Research Assistant, когда вы только начинаете, и включите Code Sense (не думайте, что он включен по умолчанию). Комбинация XCode + Interface Builder довольно эффективна, когда вы к ней привыкнете, и, честно говоря, за несколько десятилетий я никогда не использовал лучшего конструктора интерфейсов с точки зрения того, как работает интеграция с кодом или возможность разрабатывать интерфейсы, которые интеллектуально изменяют размер без тонна дополнительной работы.

person Kendall Helmstetter Gelner    schedule 21.09.2008

Я новичок в программировании для iPhone и XCode, после многих лет программирования для многих платформ, и мое впечатление довольно близко к вашему (с некоторыми отличиями):

  • Mac OSX: я перешел с Windows около 2 лет назад (в качестве эксперимента) и остался :) - не думаю, что перейду обратно. Иметь основу Unix — это очень круто, и мне нравится яркий графический интерфейс + мне нравится базовая простота интерфейса. Мне потребовалось около 2 месяцев, чтобы привыкнуть к этому, но я не могу представить себе возвращение. Я ненавижу раскладку клавиатуры MacBook и некоторые ограничения клавиатуры OSX. Забавно, как компания, которая так гордится своим пониманием юзабилити, может прийти к такому паршивому набору решений. Возможно, лучшими примерами являются отсутствие сочетания клавиш контекстного меню (щелчок правой кнопкой мыши) и тот факт, что вам нужны две клавиши для выполнения таких задач, как Home, End, PgUp и т. д. Мой главный совет — потратить время на изучение как можно большего количества клавиш. ярлыки, насколько это возможно. Я также рекомендую установить и использовать следующие сторонние приложения, которые значительно улучшили мой опыт работы с Mac: Quicksilver, Поиск пути, 1Password, Вещи, TextMate, Text Wrangler и Передать.

  • Xcode: Я полностью согласен с вами. Я думаю, что XCode довольно примитивен. Я сравниваю его с IntelliJ IDEA, с которым я много работаю, и кажется, что Apple застряла как минимум на 7 лет в прошлом:

    • code navigation is so primitive with too many windows bouncing around
    • вы должны использовать мышь все время
    • шаблоны очень ограничены и основаны на наивных концепциях макросов, не связанных с контекстом или областью действия.
    • рефакторинг ограничен всего несколькими простыми действиями
    • вы даже не можете легко выполнить тривиальные задачи, такие как переопределение метода
    • Code Sense хорош, но мог бы быть намного лучше, если бы понимал набор текста...

    Большая ирония заключается в том, что серьезные разработчики Mac даже не понимают, что у них есть проблема... Они настолько привыкли к беспорядку, с которым им приходится сталкиваться, что не могут представить себе лучшего мира. .. Вместо того, чтобы помогать вам, XCode продолжает мешать. Я могу привести десятки примеров того, насколько эта среда отстойна по сравнению с современными Java IDE (Eclipse, IntelliJ), но я считаю, что это пустая трата времени — похоже, что Apple слишком горда, чтобы учиться у других... смешно, если учесть тот факт, что изобретатели Java не стеснялись учитесь у Objective-C. Мой единственный совет (и себе тоже) — делать глубокий вдох всякий раз, когда вы открываете XCode и you-wish-you-know-about-2-years-ago">узнайте как можно больше от экспертов, которые более привыкли к этой среде.

  • iPhone SDK: это еще хуже — мы рассматривали вариант переноса нашего мобильного приложения на iPhone. месяцев назад, но решили не беспокоиться, потому что мы беспокоились, что Apple может отклонить его из магазина приложений, а вы не можете знать заранее (у них есть отклонил несколько похожее приложение в прошлом на том основании, что оно слишком близко к iTunes!)

  • Obj-C: Я нахожу Objective-C довольно приятным, и через несколько дней вы привыкнете к неудобному синтаксису обмена сообщениями, но, черт возьми, я скучаю по сборке мусора... Иметь дело с выделением и освобождением памяти немного похоже на возвращение в прошлое. время до моих первых дней C/C++. Я только начинаю изучать нюансы этого языка, но пока мне нравится то, что я нашел. В Интернете разбросано довольно много советов о лучших практиках Obj-C, которые вы не можете найти в официальной документации, и я многому научился у них (см., например, следующее обсуждение здесь, в stackoverflow)

person Ori    schedule 03.02.2009

Я также пришел из C # и работал с iPhone SDK с бета-версии 2. Я полностью согласен с Крэнли в том, что VS немного неуклюж по сравнению с Xcode. Xcode НАМНОГО отличается и совершенно чужд, когда вы начинаете его использовать. Так было и с VS в свое время. Как только вы пройдете курс обучения, это станет прекрасным опытом. Приложения, которые я разрабатываю, используют серверную часть C# (веб-службу), и я абсолютно ненавижу переключаться на VS для написания кода веб-службы из Xcode. Obj-C также довольно интересно использовать, когда вы узнаете, как он работает лучше всего: делегаты (сильно отличающиеся от делегатов .NET), сообщения, категории и все другие присутствующие странности.

Я занимался программированием на Java и Flex до .NET и всегда ненавидел документацию по .NET по сравнению с документацией по Java. Просто не режут. Я лично нашел документы и поисковую систему Xcodes не чем иным, как удивительными. Есть бесчисленное множество руководств в формате PDF, связанных с документами, которые содержат множество примеров кода. Подумайте об этом: iPhone SDK вышел из бета-версии уже около 2 месяцев. Документы показывают уровень зрелости в течение многих лет. И да, это потому, что Obj-C существует уже больше года, а фреймворки похожи.

В целом, самая большая проблема, которую я обнаружил, заключается в том, что МНОГО разработчиков .NET прыгают на подножку iPhone и пытаются использовать Obj-C, как если бы это был C# или VB. Они не читают основную документацию по Obj-C, не говоря уже о документации по iPhone, а затем очень расстраиваются и в конце концов терпят неудачу. Дискуссионные форумы переполнены этим сценарием. Программировать iPhone непросто. Выучить новый язык непросто. Это требует времени и множества попыток. Это не .NET, так что избавьтесь от этого мышления еще до того, как начнете, и все будет замечательно.

person user19087    schedule 19.09.2008