Программирование 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?

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

Андрей

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
2 674
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

Мне, например, очень нравится тот факт, что отправка сообщений на null ничего не делает. Это устраняет необходимость в большом количестве шаблонов "это ноль?" условия.

SilverWolf 07.11.2017 18:04
Ответ принят как подходящий

Я нахожусь в одной лодке с вами (в некоторой степени). Я занимаюсь C# 7 лет, начиная с .NET 1.0. Последние пару недель я учил себя какао и 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.

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

Andy 03.02.2009 18:22

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

Я согласен с вашими настроениями в App Store ... Я надеюсь, что когда выйдет Android, Apple будет вынуждена ослабить свою монополию на распространение приложений для iPhone ...

cranley 19.09.2008 20:56

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по теме