Существует ли способ смешать MonoTouch и Objective C?

Исходное Представление

Инструменты > Опции

Разработчик HTML > Общий

Начальные страницы в: Исходное Представление

Visual Studio Start pages in Source View

24
задан 11 October 2009 в 19:03
поделиться

5 ответов

Настройка, которую вы описываете, возможна , но конвейер не такой гладкий, как при выполнении всего проекта в MonoTouch. Фактически, именно так мы загрузили MonoTouch: мы взяли существующий образец Objective-C и затем заменили биты один за другим управляемым кодом.

Мы отбросили эти образцы по мере их битрообразования.

Но вы все еще можете сделать это, используя параметр командной строки mtouch --xcode, чтобы сгенерировать для вас образец программы, а затем скопировать нужные вам биты из созданного template.m в ваш main.m. Настройте компоненты, которые вам нужны, и просто запустите проект XCode оттуда.

Во время цикла разработки вы продолжите использовать mtouch --xcode

15
ответ дан 28 November 2019 в 23:55
поделиться

Вызов Objective-C из MonoTouch определенно выглядит возможным. См. Примеры селектора Objective-C

2
ответ дан 28 November 2019 в 23:55
поделиться

В какую библиотеку вы звоните? Возможно, существует эквивалент Objective-C.

1
ответ дан 28 November 2019 в 23:55
поделиться

На выходных выяснилось, что кто-то портировал Cocos2D на .NET, поэтому вы также можете выполнять всю работу над .NET:

http://github.com/city41/CocosNet

Cocos2D начинался как проект Python, который позже был перенесен на Objective -C, и сейчас предпринимаются активные усилия по его переносу на C #. Это еще не закончено, но автор принимает исправления и может быть лучшим вариантом.

6
ответ дан 28 November 2019 в 23:55
поделиться

Re: неизвестен (Google):

На самом деле мы сделали это, как описано.

См. Эта страница для быстрого запуска, но последний сегмент кода на этой странице неверно, потому что он пропускает «--xCode» -Parameter. http://monoTouch.net/documentation/xcode

Что вы должны сделать, чтобы встроить вашу Mono-Exe / DLL в программу Objective-C, состоит в том, чтобы скомпилировать источник с SharpDevelop, затем запустить Mtouch с этими параметрами :

/Developer/MonoTouch/usr/bin/mtouch --linksdkonly --xcode=output_dir MyMonoAssembly.exe

Это работает только с полной версией Monotouch. Судебный процесс не позволяет использовать «--xCode» -argument. «--Linksdkonly» необходимо, если вы хотите, чтобы Mtouch сохранить Unreferected классы в скомпилированном выходе, в противном случае он положивает неиспользуемый код.

Затем Mtouch компилирует вашу сборку в нативном коде ARM (расширение файла .s), а также генерирует шаблон Xcode, который загружает моно-время выполнения и ваш код внутри XCode / OBJC-программы. Теперь вы можете воспользоваться этим шаблоном сразу и включить ваш C-код OBJ или извлекать код загрузки среды выполнения из «Main.M» -FILE и вставьте его в существующий проект Xcode. Если вы используете существующий проект, вам также необходимо скопировать все файлы .exe / .dll / .s из Xcode-Option-Dir, который сделан Mtouch.

Теперь у вас есть ваше моно-время выполнения и сборки, загруженные в Xcode-Project. Чтобы общаться со своей сборкой, вы должны использовать моно-встраиваемую API (не часть монотуше, но моно). Это вызовы API в стиле C-стиля. Для хорошего вступления см. Эта страница .

Также могут быть полезны Mono-apty-API-документация .

Что вы должны сделать сейчас в вашем OBJ-C-C-C-коде, заключается в том, чтобы сделать вызовы в встраиваемой API. Эти шаги могут включать: получить домен приложений, получите сборку, получите изображение сборки, найдите класс, который вы хотите использовать, создать объект из этого класса, найдите методы в классе, методы вызова на объекте, аргументы в инкапсуляции C-массивы и передайте их в метод-вызов, Get и Extract Mode. Есть примеры для этого на встраивании-API-DOC-странице выше.

Вы просто должны быть осторожны с потреблением памяти вашей библиотеки, так как моно-время выполнения также принимает некоторую память.

Так что это путь от OBJ-C к C #. Если вы хотите совершать звонки из C # / Mono в вашу OBJ-C-программу, вы должны использовать монотуш-привязки, которые описаны здесь .

Вы также можете использовать чистые вызовы C-метода из встраивания / P / Invoke-API.

Надеюсь, это начнет.

10
ответ дан 28 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: