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

Порт iOS (iPhone) для Mac?

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

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

EDIT: я должен добавить, что у меня нет опыта разработки Mac., вне того, что, естественно, является разработчиком iOS.

EDIT: Классы, сильно используемые в игре: подклассы NSObject, UIView и UIViewController. Я мало что знаю о NSView, но я уверен, что все вещи UIView будут работать в этом классе. Также используется некоторое использование UITableViewController. У меня также есть Game Center, но сейчас я могу оставить эту часть. Нет мультитач.

EDIT: Моя графика - это все, что есть в структурах QuartzCore и CoreGraphics. У меня есть умеренная иерархия взглядов.

EDIT: если вы делаете такой порт, вы также можете быть заинтересованы в проблеме управления памятью

4b9b3361

Ответ 1

  • Там нет простого способа. Это так просто. Ужасно, вам просто нужно хорошо программировать Mac.

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

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

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

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

Ответ 2

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

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

https://github.com/BigZaphod/Chameleon

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

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

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