Подтвердить что ты не робот

.Net парень нуждается в некоторой информации о Cocoa

Я хочу немного поработать в OSX и iPhone. Я много лет занимаюсь разработкой .NET/С#. Мне было интересно, есть ли кто-нибудь, кто имел опыт работы на обеих платформах, которые могли бы рассказать мне, как они сравнивают и контрастируют. Я хотел бы получить представление о том, какой кривой обучения у меня впереди.

Спасибо,

Джеф

4b9b3361

Ответ 1

Сначала плохо:
Я сделал некоторую разработку Cocoa в XCode. Первое, что вы заметите, это то, что IDE (XCode) нигде не интуитивно понятен или вообще не похож на Visual Studio. Я очень скучаю по intellisense при работе в XCode. Разработчики Apple, вероятно, будут голосовать за это выражение. Но, исходя из среды .NET, это то, чего я очень скучаю. Поэтому не ставьте слишком высокие ожидания, и вы не будете слишком разочарованы. Я не пытаюсь запустить XCode, это просто не так хорошо, как Visual Studio.

Теперь хорошо:
Общая архитектура проекта Cocoa очень приятная. Я хочу, чтобы .Net Winforms и WPF использовали MVC из коробки, например, проекты Cocoa. Пока вы следуете шаблону MVC, вы должны делать все в порядке с вашим проектом. Все, что я сделал, - в Objective C. Вы можете забрать книгу. Я купил Cocoa Программирование для Mac OS X и думал, что это очень хорошо. Если у вас есть C на вашем фоне, это будет выглядеть очень хорошо. С точки зрения С#, точечная нотация для классов заменяется на сообщение, отправляющее сообщение, подобное Tcl.

Загрузите iTunes на свой компьютер и загрузите видеоролики iPhone в разделе iTunes U. Вам также необходимо зарегистрироваться для программы разработчика в Apple и загрузить дополнительные биты для XCode для iPhone.

Надеюсь, что это поможет. Я отнюдь не разработчик pro Cocoa.

Ответ 2

Я профессионально развивался с С# и .NET с бета-версии 1. XCode IDE - совершенно другое животное, чем Visual Studio. Первоначально вы будете чувствовать себя очень запутанными и потерянными. Я все еще не полностью согласен с пользовательским интерфейсом (уважаемый бог, дайте мне окно диспетчера решений и убейте это разделенное экранное дерьмо), однако в мгновение ока вы будете такими же эффективными и быстрыми, как в Studio. Документация сопоставима, хотя я предпочитаю макет в MSDN.

Что касается Cocoa, то его вообще проще работать с инструментарием GUI, чем .NET. Как было сказано выше, это другое мышление, однако, как только вы обернете его вокруг, вы его выкопаете.

В то время как его не связанный с iPhone, есть много общего между развитием Mac и iPhone. Вы сделаете одолжение, чтобы забрать последнюю версию книги Aaron Hillegass OSX. Это в значительной степени де-факто руководство для написания любого программного обеспечения Cocoa.

Вкратце... ты собираешься быть ОЧЕНЬ потерянным и запутанным изначально, но жестко это стоило того.

Ответ 3

Если у вас есть фон Cocoa/Objective-C, то вы можете перейти в развитие iPhone с помощью "Начального развития iPhone" Дейва Марка и Джеффа Ламарче:

http://www.amazon.com/dp/1430216263/

Очень легко следовать, но авторы предполагают некоторые предварительные знания Objective-C (как указано на задней обложке), поэтому я бы рекомендовал начать с первых пяти или шести глав "Cocoa Programming for Mac OS X" Аарона Хиллегасса, как отмечали другие ранее.

http://www.amazon.com/dp/0321503619/

Аарон использовал и преподавал Objective-C и рамки, которые теперь связаны с Cocoa со времени его дней в NeXT, и это показывает. Материал действительно, очень хороший.

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

Если вы хотите быстро заработать iPhone, и вы готовы инвестировать немного денег, команда Aaron может также научить вас всему, что вам нужно знать за неделю, через классы в Большом ранчо Nerd. (Класс iPhone всегда заполняется быстро, но если вы оказались в Силиконовой долине, в январе все еще есть место для iPhone для пассажиров.)

http://www.bignerdranch.com/

(Перейдите на вкладку классы для расписания того, что и когда, включая Ruby, Android и т.д.)

Хотя я лично предпочитаю варианты выше, есть, конечно, и некоторые бесплатные онлайн-варианты. Скотт Стивенсон приложил огромные усилия в учебники Cocoa/Objective-C:

http://www.cocoadevcentral.com/

И Стэнфорд предложил классы как в разработке Mac, так и в разработке iPhone, которые преподавали инженеры Apple, и опубликовал материалы класса в Интернете:

Mac: http://www.stanford.edu/class/cs193e/
>  iPhone: http://www.stanford.edu/class/cs193p/

Наконец, кажется, что разработчики, которые приходят в разработку Mac/iPhone с фоном Windows, стараются избегать создания интерфейса Builder (IB) и вместо этого создают пользовательский интерфейс в коде. Я понимаю, почему - IB не выкладывает все, что происходит в хорошем коде, но я настоятельно рекомендую против этой стратегии.

Разработка Mac/iPhone - это минимизация кода. Чем меньше кода вы должны писать, тем меньше вы должны поддерживать, и тем меньше шансов на ошибку. IB отлично подходит для минимизации кода, необходимого для пользовательского интерфейса.

Ваш фон C/С# хорошо послужит вам. Вы обнаружите, что Objective-C кажется довольно странным, но я подозреваю, что вы по достоинству оцените его сильные стороны, и вы заберете его очень быстро. В отличие от С++, это на самом деле довольно просто.

Ответ 4

Я только что отметил это как фаворит, так как я надеюсь, что еще ребята из .NET + Cocoa. Я только начинаю (снова) с Cocoa и до сих пор люблю его. (Это помогает, что я работаю над 10.5, что позволяет сборку мусора в качестве опции.)

Некоторые из самых больших различий, которые я заметил до сих пор:

  • Да, XCode очень отличается от Visual Studio. Другие могут высмеять природу "сплит-экрана", но я нашел ее довольно интуитивной, как только я обернул вокруг себя мозг. Возможно, самый большой совет, который я могу здесь дать, - это настроить панель инструментов, добавить кнопку "Редактор" и использовать эту кнопку религиозно для редактирования кода.
  • Синтаксис сообщений кажется незнакомым, но я подозреваю, что, поскольку я не из фона Smalltalk. (Я слышал, хотя я не подтвердил это, что понятия очень похожи.) По-видимому, с 10.5 добавлена ​​точечная нотация и понятие свойств, но Hillegass рекомендует против них. Я говорю, делаю все, что кажется правильным. (Я еще так далеко не получил в книге, сам...)
  • Язык не предназначен для всех целей и целей. Плюсы здесь в том, что вы можете действительно модифицировать классы классов в соответствии с вашими потребностями, и сообщения будут решены во время выполнения, что позволит вам получить больше свободы. Недостатки в том, что вы не можете найти ошибки до выполнения, и многие из этих ошибок не ведут себя так, как делают исключения .NET, то есть многие из них не вызывают полной остановки приложения, когда вы не можете их заманить. (По общему признанию, есть ключевое слово @throw, я еще не получил его.:)) Еще один аргумент в том, что концепция Obj-C null (nil) может получать сообщения - нет NullReferenceException или. Оба они могут вызвать отладочную головную боль.
  • Интерфейс Builder - это совершенно новый зверь, по сравнению с дизайнерами WinForms/WPF/ASP.NET. Концепция архивирования всего пользовательского интерфейса и отсутствие его кода - одна из самых сложных концепций для многих из нас, ребята из .NET. Ничего плохого в этом нет, но нам нужно обнять голову.
  • Сбор мусора. Начиная с 10.5, Cocoa и Objective-C поддерживают как подсчет ссылок (retain/release/autorelease), так и автоматическую сборку мусора. Только что начал работать, я не могу подробно рассказать об этом, но в то время как GC проще в использовании, вам придется вручную указывать его в своих целевых параметрах - и вашему приложению теперь потребуется 10,5 или выше, чтобы запустить. Кроме того, даже с GC лучше всего вручную настроить указатели на nil, когда вы закончите с ними, чтобы намекнуть GC, что они могут быть готовы к сбору. Не так прозрачно, как .NET. (Опять же, неплохо, просто разные. Что нужно знать!)

Я отнюдь не эксперт. Я буквально только начал этот путь сам (еще раз). Тем не менее, я люблю его, и я подозреваю, что если такой же крупный разработчик Microsoft, как и я, может его копать, другие могут тоже.

Наконец, я обнаружил блог .NET Addict несколько месяцев назад. Автор делает как .NET, так и Cocoa, и имеет несколько сообщений, обсуждающих различия. Очень рекомендуется.

Ответ 5

Я очень опытен в обоих, хотя я не делал много кода на С# в течение года или около того. Я пошел от Obj-C до С#, и у меня не было слишком много проблем. Код Obj-C мне кажется немного более неофициальным и менее жестким, чем С#; например, нет типизированных массивов, и вам не нужно беспокоиться о явной проверке, является ли объект nil/null перед вызовом метода на нем. В общем, это хорошо, потому что вы можете написать более компактный, элегантный код (IMO). В то же время, в отличие от С#, вам нужно знать основные понятия программирования C для работы с Obj-C, поэтому вам может понадобиться освежить такие вещи, как указатели, если вы ржавы.

Я думаю, что для API вы обнаружите, что Cocoa больше подходит для настольных приложений, а не для предприятия, как .NET. Например, где .NET имеет ADO.NET, элемент управления ReportViewer, а Cocoa - основные данные, PDFKit и SearchKit.

Ответ 6

Большая вещь, которую вы должны всегда напоминать себе, заключается в том, что Cocoa просто работает не так, как WinForms. Вы не найдете "обработчика событий" в любом месте, даже если вы его ищете! Не то, что WinForms плох, но Cocoa - это просто парадигма.