Создание пользовательских интерфейсов Cocoa для OS X с С# и Mono
Кто-нибудь проводил время, сравнивая различные мосты Objective C и связанные с ними Cocoa обертки для Mono?
Я хочу портировать существующее приложение С# для работы в OS X. В идеале я должен запустить приложение в Mono и создать для него собственный Cocoa интерфейс.
Мне интересно, какой мост будет лучшим выбором.
В случае, если это полезно для всех, вот некоторые ссылки на мосты, которые я нашел до сих пор:
Ответы
Ответ 1
Команда Mono выпустила новый мост под названием MonoMac.
Это, по сути, настольная версия среды MonoTouch, созданная для iPhone.
Мигель объявил новый мост в своем блоге здесь: http://tirania.org/blog/archive/2010/Apr-19.html
Как только MonoMac созреет, я подозреваю, что он станет мостом, которым пользуются люди.
Ответ 2
Я недавно тестировал Monobjc, NObjective и MObjc/MCocoa с F #, и я поеду с MObjc/MCocoa.
Monobjc - это то, что вы пишете лучше всего документированный и упакованный, но по сравнению с другими двумя slow и не "ревертирует исключения" из ObjC.
Я считаю, что NObjective и MObjc/MCocoa являются единственными, которые реконструируют исключения из ObjC, и поэтому я считаю их единственными реальными альтернативами.
Как обсуждалось здесь NObjective использует структуры с наследованием, которые я нахожу довольно страшными и заставил меня наконец выбрать MObjC/MCocoa.
(Возможно, у вас также есть проблема с лицензией. Monobjc и NObjective находятся под LGPL, MObjc/MCocoa находится под MIT...)
Ответ 3
Я думаю, что NObjective - лучший выбор, потому что у него есть автоматическая генерация кода для оберток Objective-C, которую можно легко настроить для регенерации оберток для дальнейших версий Mac OS.
Ответ 4
Хорошо, я спрошу: зачем вам это делать? Cocoa Конфигурация пользовательского интерфейса, в том числе Cocoa -std delgates и Cocoa bindngs тесно связаны с Objective-C. Комбинация Interface Builder и Objective-C замечательно продуктивна. Хотя вы можете использовать Interface Builder со многими мостами до Objective-C (включая PyObjC, MacRuby и многие из мостов С#), вы неизбежно потеряете производительность из-за любого несоответствия импеданса между каркасом и выбранным вами языком. С С# это несоответствие является значительным. Поскольку вы пишете собственный пользовательский интерфейс, тем самым теряя кросс-платформенное преимущество, которое вы получите от С#, я бы использовал Objective-C. Для компетентного C/С++/С#/Java/etc. программист, обычно требуется 2-3 дня, чтобы стать комфортным и продуктивным в Objective-C.
Ответ 5
В списке рассылки Mono-OSX произошло довольно продолжительное обсуждение различных мостов.
Обсуждение начинается здесь с Miguel:
- Объявление о том, что Cocoa # больше не будет поддерживаться Novell.
- Попытка объединить оставшиеся усилия в сообществе.
Если вы прочтете оставшуюся часть обсуждения, кажется, что сообщество Mono склоняется к Monoobjc или MObjc/MCocoa; поэтому, если вы делаете свои собственные исследования, это, вероятно, те, на которых нужно сосредоточиться.
Ответ 6
Не спрашивайте, почему, поскольку у вас есть свои причины, я уверен.
Я бы посмотрел проект Unity3D и посмотрел, можете ли вы рассказать, как они это сделали. Выглядит, мм, тяжело.