перенести приложение iOS (iPhone) на mac? - PullRequest
37 голосов
/ 02 января 2011

Есть ли предпочтительный способ сделать это?

Приложение не слишком большое. , , игра для одного игрока, которую я написал в течение нескольких месяцев.

РЕДАКТИРОВАТЬ: я должен добавить, что у меня нет опыта разработки Mac. , , за пределами того, что естественно для разработчика iOS.

РЕДАКТИРОВАТЬ: Классы, интенсивно используемые в игре: подклассы NSObject, UIView и UIViewController. Я не знаю много о NSView, но я уверен, что все вещи UIView будут работать в этом классе. Также некоторое использование UITableViewController. У меня также есть Game Center, но я могу пока оставить эту часть. Мультитач нет.

РЕДАКТИРОВАТЬ: моя графика - это все, что находится в платформах QuartzCore и CoreGraphics. У меня есть умеренная иерархия представлений.

РЕДАКТИРОВАТЬ: Если вы делаете такой порт, вы также можете быть заинтересованы в вопросе управления памятью

Ответы [ 5 ]

25 голосов
/ 02 января 2011
  1. Нет простого пути. Это так просто.Удручающе, вы просто должны стать хорошими в программировании на Mac.

  2. «Я почти уверен, что все вещи UIView будут работать в этом классе» - к сожалениюнетВсе по-другому, достаточно того, что вам нужно много работать.

Это не веселый концерт.Убедитесь, что вы действительно, действительно думаете, что оно того стоит в финансовом отношении.

Помимо всего прочего, помните о проблеме «родственные взгляды не работают на OSX», если вы складываете много представлений в своем приложении iOS,По сути, вам придется перейти на использование слоев (а не просто представлений) на Mac, если вы полагаетесь на вложенные иерархии представлений здесь и там на телефоне!

Нажмите эту ссылку: Есть липравильный способ обработки перекрывающихся братьев и сестер NSView? для подробностей этой конкретной проблемы!

14 голосов
/ 14 апреля 2011

http://chameleonproject.org/ Стоит проверить UIKit для Mac от Iconfactory.

"Хамелеон находится в стадии разработки. В настоящее время фреймворк реализует около 60% UIKit после девяти месяцев работы."

https://github.com/BigZaphod/Chameleon

4 голосов
/ 02 января 2011

У вас впереди много работы.В то время как чисто алгоритмические классы будут портировать без каких-либо изменений, все, что касается UIKit, вероятно, придется переписать или сильно адаптировать.Шаблон проектирования класса пользовательского интерфейса в OSX представляет собой связь между представлениями, где ваш код отвечает за управление контроллерами;в то время как в iOS это одно из отношений между контроллерами представления, где подразумевается управление представлениями.

Конечно, как упоминалось BoltClock, у вас есть проблема взаимодействия.Поскольку сенсорный ввод больше не работает, вам, вероятно, придется сначала поработать над моделью взаимодействия, даже до того, как вы начнете портировать.

2 голосов
/ 03 января 2011

Как говорят другие, портирование может быть рутиной. Общие методы работают, хотя. Вы перепроектируете интерфейс в Интерфейсном Разработчике (где применимо) и проверяете, как называются различные элементы управления (у CocoaTouch есть только небольшое подмножество типичных элементов управления рабочего стола) UI * обычно становится NS *. Делегирование таблиц схоже, поэтому, вероятно, это будет легко.

Я должен порекомендовать книгу Аарона Хиллегаса как обычно. Это отличное введение в разработку Mac, и знание iOS-разработки дает вам преимущество.

Поскольку это игра, вам, вероятно, нужно подумать, как сделать полноэкранный режим. Игра больше не обязательно занимает весь экран, и вам не следует ее форсировать. Теперь понадобится целый новый набор предпочтений. Конечно, теперь есть некоторая «забавность», поскольку есть новые способы обработки списка разрешений / изменения с помощью Snow Leopard (с предыдущими способами, которые выдают предупреждения об устаревании).

Просто примите, что возможно будет длительный переходный период, пока все не "щелкнет":)

2 голосов
/ 02 января 2011

Существует библиотека с открытым исходным кодом (BSD) UMEKit , которая может помочь с переносом нескольких классов пользовательского интерфейса, но вам, возможно, придется переписать достаточное количество пользовательского интерфейса, чтобы лучше обрабатывать мышь / клавиатуру / мультиОкно / меню GUI среды.Базовые объекты NSO и некоторые графические объекты Open GL и Quartz могут переноситься с незначительными изменениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...