Перемещение от Windows API до Mac OS

Я сделал бы что-то как:

void GetsCalledALot(int* data1, int* data2, int count)
{
  const size_t mvSize = memberVector.size();
  memberVector.reserve(mvSize + count);

  for (int i = 0; i < count; ++i) {
    memberVector.push_back(MyType(data1[i], data2[i]));
  }
}

необходимо определить ctor для типа, который хранится в memberVector, но это - маленькая стоимость, поскольку это даст Вам лучший из обоих миров; никакая ненужная инициализация не сделана, и никакое перераспределение не произойдет во время цикла.

6
задан cfischer 29 September 2009 в 12:46
поделиться

5 ответов

Я обучал программированию на Какао несколько опытных программистов с Windows. Вы можете найти предыдущий пост на эту тему.

Какао - это совсем другой способ мышления, чем MFC и его аналог. Вы добьетесь гораздо большего, если потратите время, чтобы узнать, как Cocoa подходит к вещам и адаптироваться к его образу мышления, вместо того, чтобы пытаться найти самый быстрый способ реализовать свой текущий образ мышления в ObjC. Можно написать код в стиле MFC для Mac, но в этом случае вы всегда будете бороться с фреймворком. Я видел, как многие разработчики Windows борются с этим.

Лучшая книга для изучения Какао - это Программирование какао для Mac OS X . Предполагая, что вы разработчик на C ++ с солидным опытом работы с ООП, это книга для начала. Если у вас ограниченный опыт объектно-ориентированного программирования, то начните с Programming Objective-C 2.0 .

Вы будете удивлены, насколько быстро Objective-C может кодировать, когда вы поймете шаблоны. По моему опыту, это действительно может быть потрясающе по сравнению с C ++. Существует больше RAD-подобных систем, таких как REALbasic, и теперь вы можете разрабатывать приложения Cocoa на Ruby, что может быть немного быстрее. Но на рынке Mac действительно нет замены ObjC. Трудно создать приложение, которое работало бы как приложение Mac, без использования фреймворков Mac, и пользователи Mac, как правило, гораздо более озабочены такими вещами, чем пользователи Windows.

У меня нет опыта работы с LispWorks, но LISP кажется ужасным языком для разработки такого рода богатых пользовательских интерфейсов, которыми известны приложения Mac. Мне нравится LISP (на самом деле довольно много), но философия «отсутствия побочных эффектов» функционального программирования, похоже, не соответствует большинству целей пользовательского интерфейса (особенно когда пользовательский интерфейс Mac становится все более ориентированным на анимацию). Во всяком случае, программирование для Mac движется в сторону декларативного, а не функционального программирования (Core Animation и Grand Central Dispatch имеют множество декларативных концепций).

Существует не такой большой рынок сторонних компонентов, как для Windows. Отчасти это связано с тем, что Cocoa уже предоставляет такой богатый набор компонентов, чего нет в MFC, и потому, что ожидается, что приложения Mac с хорошим поведением будут использовать эти компоненты, так что вы будете работать как все другие приложения Mac. Определенно существует небольшой рынок коммерческих компонентов в духе RadControls для .NET (очень хороший инструментарий). Но есть довольно много хороших бесплатных компонентов с гибкими лицензиями (обычно на основе MIT). Некоторые из моих любимых:

Как я уже упоминал ранее, пользователи Mac придирчивы к своему пользовательскому интерфейсу. Намного больше, чем пользователи Windows. Они ожидают, что вещи будут отполированы, и они ожидают, что вещи будут интегрированы со всеми мелочами, которые делают Mac хорошими. Это означает перетаскивание, Spotlight, сервисы, Applescript, Expose, QuickLook, интегрированная проверка орфографии и т. д. и т. д. Очень сложно делать все это правильно, если вы не используете встроенные фреймворки. Вот почему я рекомендую начинающим разработчикам Mac начинать с самого начала и изучать фреймворки.

Для Mac, если у вас есть много оборудования (например, клавиатуры и мониторы), то Mac Mini - хорошая дешевая коробка. iMac отлично подходят, если вам нужен моноблок, и любой MacBook подойдет, если вам нравится портативность. Сегодня на рынке нет Mac, который не был бы идеальной коробкой для разработки. Очевидно, что если вы много работаете, 8-ядерный Mac Pro значительно ускоряет компиляцию, но я много работал над профессиональными разработками на 13-дюймовом MacBook. Если вы хотите получить как можно дешевле, ищите отремонтированы или бывшие в употреблении (мне нравится мой отремонтированный Mac Mini).

9
ответ дан 8 December 2019 в 17:24
поделиться

Если вы знакомы с C, вы можете изучить Objective C, поскольку это «родной» язык программирования Mac. Это также то, что вам нужно использовать для написания приложений для iPhone. Какао - это основной API Apple, в котором будет много необходимых вам инструментов.

а) Прочтите эту ветку, чтобы получить рекомендации по книгам: https://stackoverflow.com/questions/7571/cocoa-and-objective-c-resources

б) Apple делает Xcode для разработки. Есть конечно, есть лучшие, но это неплохо.

г) Какао - это основной API Apple, который предоставляет «основные» сервисы, такие как CFNetwork для работы в сети. Также есть данные ядра, звук ядра, анимация ядра, изображение ядра, расположение ядра ... Под всем этим OSX - это Unix, так что у вас есть доступ ко многим библиотекам unix / linux.

д) iPhone - большая часть рынка Mac. Среды разработки для iPhone и OSX не сильно отличаются, так что вы можете изучить и то, и другое.

е) Для большинства разработок достаточно любого Mac. Если вам нужен ноутбук, это действительно вопрос размера экрана и цены. Но я бы порекомендовал как минимум 15-дюймовый экран. Вам не нужно тратить лишние деньги на более быстрый процессор, но вы можете приобрести жесткий диск большего размера.

2
ответ дан 8 December 2019 в 17:24
поделиться

Если вы программировали для Windows на C и / или C ++, возможно, вам будет проще перенести приложение на C # /. Net, а затем запустить его на Mac с помощью Mono. По крайней мере, некоторые из доступных сторонних компонентов .Net будут работать на Mono (см. http://www.mono-project.com/Third_Party_Controls_Status ).

Я понятия не имею, какой Mac вам следует купить - рекомендую приобрести одну из симпатичных.

1
ответ дан 8 December 2019 в 17:24
поделиться

a) ...

b) Вы можете использовать Python вместе с wxPython и быть кроссплатформенным. Python по умолчанию включен в Mac OS X.

c) ...

d) Я уверен, что есть, но я не могу вам сказать больше. Если вы используете Python, вы получаете тонны сторонних библиотек бесплатно .

д) Они не принимают любезно рекомендации по инопланетному графическому интерфейсу :

Word 6.0, выпущенный в 1993 году, широко считается худшей версией Word для Mac, поскольку он основан на той же кодовой базе, что и Word 6.0 для Windows. Это означало, что он выглядел и работал больше как программное обеспечение Windows, чем программа Macintosh. Пользователи Mac были настолько взволнованы, что Microsoft фактически выпустила версию Word 5.1 для недовольных владельцев Word 6.0.

е) Практически любой iMac подойдет для программирования.

1
ответ дан 8 December 2019 в 17:24
поделиться

e) Это небольшой рынок.

f) iMac. Изменить: поскольку там написано, что ноутбук - Macbook Pro 13 - отличное предложение.

1
ответ дан 8 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: