перенести приложение iOS (iPhone) на Mac?

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

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

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

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

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

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


person William Jockusch    schedule 02.01.2011    source источник
comment
Какие технологии вы использовали при написании игры? Насколько вы полагаетесь на классы / объекты UIKit?   -  person John Parker    schedule 02.01.2011
comment
Просто помните, что, несмотря на трекпады, прикосновение больше не является основным методом ввода.   -  person BoltClock    schedule 02.01.2011


Ответы (5)


  1. Нет простого пути. Все очень просто. К сожалению, вам просто нужно научиться программировать Mac.

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

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

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

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

person Fattie    schedule 02.01.2011
comment
Да, я иногда забываю, как прекрасно, что UIKit так чисто связывает UIViews с CALayers. Преобразование представлений в слои, когда что-то начинает ломаться в OSX, - это не весело. - person Dave R; 02.01.2011
comment
Какие родственные представления не работают с проблемой OSX? Небольшой поиск в Google мне не помог. - person William Jockusch; 02.01.2011
comment
Хорошо, я предполагаю, что вы имеете в виду проблему, упомянутую в этот вопрос - person William Jockusch; 02.01.2011

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

«Работа над Chameleon продолжается. В настоящее время фреймворк реализует около 60% UIKit после девяти месяцев работы».

https://github.com/BigZaphod/Chameleon

person Lloyd Dewolf    schedule 13.04.2011

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

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

person Dave R    schedule 02.01.2011

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

person hotpaw2    schedule 02.01.2011

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

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

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

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

person orb    schedule 02.01.2011