Программирование на iPhone - впечатления, мнения? - PullRequest
6 голосов
/ 19 сентября 2008

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

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

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

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

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

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

Andrew

Ответы [ 7 ]

5 голосов
/ 19 сентября 2008

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

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

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

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

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

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

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

3 голосов
/ 19 сентября 2008

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

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

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

2 голосов
/ 19 сентября 2008

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

2 голосов
/ 19 сентября 2008

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

1 голос
/ 03 февраля 2009

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

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

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

    • навигация по коду настолько примитивна, что слишком много окон подпрыгивает
    • Вы должны использовать мышь все время
    • Шаблонирование очень ограничено и основано на наивных макро-концепциях, не связанных с контекстом или областью действия
    • рефакторинг ограничен несколькими простыми действиями
    • Вы даже не можете легко выполнить тривиальные задачи, такие как переопределение метода
    • Code Sense - это хорошо, но могло бы быть намного лучше, если бы он понимал, как печатать ...

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

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

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

1 голос
/ 21 сентября 2008

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

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

0 голосов
/ 19 сентября 2008

Я также пришел из C # и работал с iPhone SDK начиная с бета-версии 2. Я полностью согласен с Cranley в том, что 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, поэтому потеряйте это мышление еще до того, как вы начнете, и все будет замечательно.

...