В настоящее время я работаю над инструментами портирования в этом пространстве и имею многолетний тяжелый опыт использования или написания кроссплатформенных сред для Mac и Windows.
Одной из самых больших проблем в прошлом был отказ Apple открыть формат пера для Какао (углеродные пики были открытыми файлами XML много лет назад). Это изменилось с XCode 3 и форматом .xib , а также объяснено Frasier Speirs .
По крайней мере, на базовом уровне компоновки теперь есть возможность автоматизировать перенос из одного формата XML в другой. Я считаю WPF (XAML) более чистым, поэтому я использую его в качестве базового формата и перехожу на Какао.
Когда дело доходит до кода, хотя вы можете использовать C # под Mono, проект CocoaSharp кажется либо остановленным, либо очень медленным, и я бы не рекомендовал его.
Если вы знакомы с C ++, рассмотрите возможность использования как можно большего количества логики в C ++ с тонким специфичным для платформы уровнем в C # и Objective-C.
Другой подход, который стоит изучить, - это использование динамического языка, такого как Python или Ruby. Я не уверен, что в настоящее время является более зрелым между IronPython и IronRuby , но оба они теперь поддерживаются сотрудниками Microsoft. Что касается какао, я думаю, что гибкость синтаксиса Ruby победит, и RubyCocoa , вероятно, обгонит PyObjC .
В противном случае работайте в C # и Objective-C и поддерживайте две полностью независимые базы кода с одинаковым дизайном. К счастью, у каркасов есть сопоставимая семантика для большинства вещей, особенно если вы используете привязки.