Ответ 1
Скачок языка в порядке. Как только вы пройдете начальный шок [
и ]
. Тем не менее, библиотеки и каркасный шок будут существенными.
Фреймы Cocoa и Touch значительно легче по сравнению с .Net Framework, поэтому, по крайней мере, вы можете взглянуть на яркую сторону, вам будет меньше учиться. Но их основная философия, макет и исторический путь эволюции сильно отличаются от структуры С#/. Net. Будет ли это легко или сложно, трудно оценить. Некоторые личные мнения:
- Способ создания пользовательского интерфейса Cocoa - это светлые годы впереди всего .Net framework сегодня, Forms или WPF. Сначала это будет сложно понять, но если ваш grok это, он сделает много смысла. Хороший ole 'Model-View-Controller на основе структуры Smalltalk и, естественно, приведет вас к следующему пути справа. проектирование пользовательского интерфейса.
- Графика, видео, средства массовой информации будут чувствовать себя как с другой планеты при выходе из .Net-фона. Но, несмотря на их кажущуюся тайную внешность, предложения Cocoa очень мощные, хотя и как-то низкие.
- Анимация будет огромным вздохом облегчения. Cocoa анимация просто проста в использовании, и нет ничего эквивалентного в .Net
- Если вы создаете openGL вместо Cocoa родной графики, то openGL и openGL практически одинаковы с любой платформой.
- Сетевое программирование хуже на стороне Cocoa. У вас есть базовая поддержка и вы должны признать, что, по крайней мере, API разработан, который действительно трудно сделать глупым материалом (он заставляет вас использовать асинхронное программирование, поэтому не более одного потока на клиентский не-смысл), но я ' d, вы пропустите утилиты сахара .Net(WebRequest, WebClient и т.д.),
- Разбор XML. Cocoa поддержка просто примитивна. По крайней мере, опять же, синтаксический анализ XML является событием, поэтому он будет направлять вас к лучшим программам, но сложно собрать.
- Database. Это будет другой мир. У вас есть выбор перехода на сырой SQLite или Core Data. Основные данные лучше imho. Является высокоуровневым ORM и активным типом записей, с учетом всех тонкостей базового хранилища. Прост в использовании и мощный, если вы просите его сделать что-то, что он знает, как это сделать. Невероятно громоздко заставить его сделать что-то, что он не знает, как это сделать. Правда для любой ORM, в конечном счете. Вы пропустите LINQ, и вам придется забыть SQL. Суть его в том, что опыт программирования DB с .Net просто не переносится в мир Core Data. Альтернатива raw SQLite будет выглядеть более знакомой, но на очень низком уровне, будет больше похожа на программирование ODBC 1990 года, чем в 2010 году .Net.
- Программирование кодирования по ключевым словам. Эта концепция не имеет прямого эквивалента .Net. Это может звучать как простой словарь, но на самом деле он более мощный. Он переплетается с механизмом времени выполнения Objective part [ Objective-C] и порождает некоторые опрятные трюки. Для эффективного использования Core Animation или Core Data вам нужно будет понять кодировку Key-Value. Вы можете думать об этом как о отражении стероидов. Он может достичь некоторых из тех же трюков, которые могут выполнять Linq-to-Objects, но не будет таким элегантным, как Linq.
- Это С++. Objective-C является надмножеством С++ и поддерживается недавними каплями gcc, поэтому вы можете вернуться в С++ в любое время. STL, функторы, метапрограммирование шаблонов, все они работают. Вы можете смешивать и сопоставлять в одном приложении чистые Cocoa и Core Objective-C с С++. Вы не сможете сделать что-то вроде наследования класса Objective-C как класса С++, но вы сможете общаться между классом С++ и объектом Objective-C. Не уверен, каков текущий статус boost или Loki поддержка.
Многие из областей, которые плохо относятся к Cocoa, имеют разные сторонние библиотеки, но я не могу вступать в сравнение со всеми сторонними сторонниками сторонних сторон.
у меня есть жизнь...В целом, я бы подвел итог в ближайшее время: В Objective-C строка ввода выше. Принесите мозг.