Pregunta

Me gustaría saber si hay una manera de mezclar C # y Obj-C código en un proyecto. En concreto, me gustaría utilizar Cocos2D para mi interfaz de usuario en Obj-C y llamar a algunos MonoTouch C # -Library que hace algunos cálculos y obtener unos valores de nuevo. ¿Hay alguna forma de hacer esto? O tal vez al revés, i. mi. la construcción en MonoTouch y llamando Cocos2d-funciones? Gracias.

¿Fue útil?

Solución

La configuración que se describe es posible, pero la tubería no es tan suave como lo es cuando lo hace todo su proyecto en MonoTouch. Esta es, de hecho, la forma en que Bootstrapped MonoTouch: tomamos una muestra de Objective-C existente y que luego se reemplaza los bits uno a uno con el código administrado.

Dejamos caer las muestras, ya que bitrot.

Pero todavía se puede hacer esto, utilice la opción de línea de comandos --xcode del mTouch para generar un programa de ejemplo para usted, y luego copiar los bits que desea desde el template.m generado en su main.m. Personalizar los componentes que desea, y acaba de iniciar el proyecto XCode desde allí.

Durante su ciclo de desarrollo, se seguirá utilizando --xcode mTouch

Otros consejos

Re: desconocido (Google):

En realidad no esta como se describe.

Vea esta página para un comienzo rápido, pero el segmento de código última en esa página es incorrecta, ya que está omitiendo el -parámetro "--xcode". http://monotouch.net/Documentation/XCode

Lo que hay que hacer para incrustar el Mono-EXE / DLL en un Objective-C programa es compilar las fuentes con SharpDevelop, a continuación, ejecutar mTouch con estos parámetros:

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

Esto sólo funciona con la versión completa de MonoTouch. La prueba no permite utilizar el -argumento "--xcode". Se necesita la -argumento "--linksdkonly" si quieres mTouch a mantener las clases no referenciados en la salida compilado, de lo contrario se despoja código no utilizado.

A continuación, mTouch compila su montaje en el brazo de código nativo (.s extensión de archivo) y también genera una plantilla XCode que carga el Mono-Runtime y el código dentro de la / ObjC-programa de XCode. Ahora puede utilizar esta plantilla de inmediato e incluya su Obj-C-código o extraer el código de tiempo de ejecución de la carga -file "main.m" e insertarlo en su proyecto XCode existente. Si utiliza un proyecto existente también hay que copiar todos los archivos .exe .dll / / .s del Xcode-salida-dir que mTouch hizo.

Ahora que tenemos un mono-Tiempo de ejecución y montaje cargados en un proyecto XCode. Para comunicarse con el montaje, hay que utilizar el Mono-incrustación-API (no forma parte de MonoTouch, pero Mono). Estas son llamadas a la API C-estilo. Para una buena introducción ver esta página .

También el Mono-incrustación-API documentación podría ser útil.

Lo que tienes que hacer ahora en su Obj-C-código es para hacer llamadas de incrustación-API. Estas medidas podrían incluir: Obtener el dominio de aplicación, obtener la asamblea, obtener la imagen del montaje, localice la clase que desea utilizar, crear una instancia de un objeto de esa clase, encontrar métodos de clase, métodos de compra sobre objeto, encapsular los argumentos del método en C-arrays y los pasan al método de guardia, reciben y los valores de retorno del método de extracción. Hay ejemplos para esto en el API-doc-incrustación de la página anterior.

Sólo hay que tener cuidado con el consumo de memoria de la biblioteca, ya que el tiempo de ejecución mono toma un poco de memoria también.

Así que esta es la forma de Obj-C a C #. Si desea realizar llamadas desde C # / Mono en su Obj-C-programa, usted tiene que utilizar las MonoTouch encuadernaciones, que se describen aquí .

También es posible usar C-método pura llama de la incrustación / P / Invoke-API.

Espero que esto le ayudará a comenzar.

El fin de semana se supo que alguien ha estado portando Cocos2D a .NET, por lo que también podría hacer todo el trabajo en .NET:

http://github.com/city41/CocosNet

Cocos2D comenzó como un proyecto de Python, que más tarde se consiguió portado a Objective-C, y ahora hay un esfuerzo activo para llevarlo a C #. No está terminado, pero el autor está aceptando parches y podría ser un mejor camino a seguir.

Llamar a Objective-C de MonoTouch definitivamente parece posible. Vea la ejemplos selector de Objective-C

¿Qué biblioteca está llamando? Tal vez hay un equivalente de Objective-C.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top