visual template studio examples ejemplos demos app objective-c xamarin.ios mixing

objective-c - studio - xamarin forms template



¿Hay alguna manera de mezclar MonoTouch y Objective-C? (5)

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

Me gustaría saber si hay una manera de mezclar códigos C # y Obj-C en un proyecto. Específicamente, me gustaría usar Cocos2D para mi interfaz de usuario en Obj-C y llamar a algunos MonoTouch C # -Biblioteca que realiza algunos cálculos y recupera algunos valores. ¿Hay alguna forma de hacer esto? ¿O tal vez al revés, es decir, construir en MonoTouch y llamar a las funciones de Cocos2D? Gracias.


Durante el fin de semana, surgió el hecho de que alguien ha estado transfiriendo 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 luego se trasladó 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 una mejor manera de avanzar.


La configuración que describe es posible, pero la canalización no es tan fluida como cuando realiza todo el proyecto en MonoTouch. De hecho, así es como iniciamos MonoTouch: tomamos una muestra existente de Objective-C y luego reemplazamos los bits uno por uno con código administrado.

Dejamos caer esas muestras al bitrot.

Pero aún puede hacer esto, use la opción de línea de comando - código de mtouch para generar un programa de muestra, y luego copie los bits que desee de la plantilla.m generada en su main.m. Personalice los componentes que desee e inicie el proyecto XCode desde allí.

Durante su ciclo de desarrollo, continuará usando mtouch --xcode



Re: desconocido (google):

En realidad, hicimos esto como se describe.

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

Lo que debe hacer para incrustar su Mono-EXE / DLL en un programa Objective-C es compilar su fuente con SharpDevelop, luego ejecutar mtouch con estos parámetros:

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

Esto solo funciona con la versión completa de MonoTouch. La versión de prueba no permite utilizar el argumento "--xcode". El argumento "--linksdkonly" es necesario si desea que mtouch mantenga las clases sin referencia en la salida compilada, de lo contrario, elimina el código no utilizado.

Luego mtouch compila su ensamblaje en código ARM nativo (extensión de archivo .s) y también genera una plantilla XCode que carga el Mono-Runtime y su código dentro del programa XCode / ObjC-program. Ahora puede usar esta plantilla de inmediato e incluir su código Obj-C o extraer el código de carga en tiempo de ejecución del archivo "main.m" e insertarlo en su proyecto XCode existente. Si usa un proyecto existente, también tiene que copiar todos los archivos .exe / .dll / .s del directorio xcode-output-dir que hizo mtouch.

Ahora tienes tu Mono-Runtime y ensamblado cargado en un proyecto XCode. Para comunicarse con su ensamblaje, debe utilizar la API Mono-Embedding (que no es parte de MonoTouch, sino Mono). Estas son llamadas API de estilo C Para una buena introducción vea esta página .

También la documentación de la API de Mono-Embedding podría ser útil.

Lo que tiene que hacer ahora en su código Obj-C es hacer llamadas de Incrustación de API. Estos pasos pueden incluir: obtener el dominio de la aplicación, obtener el ensamblaje, obtener la imagen del ensamblaje, ubicar la clase que desea usar, crear instancias de un objeto de esa clase, buscar métodos en clase, llamar a métodos en el objeto, encapsular argumentos de métodos en Arregle C-arrays y páselos al método-llamar, obtener y extraer los valores de retorno del método. Hay ejemplos para esto en la página de incrustación-api-doc arriba.

Solo debe tener cuidado con el consumo de memoria de su biblioteca, ya que el tiempo de ejecución mono también requiere algo de memoria.

Así que este es el camino desde Obj-C a C #. Si desea realizar llamadas de C # / Mono a su programa Obj-C, debe utilizar los enlaces MonoTouch, que se describen here .

También puede utilizar llamadas de método C puro desde la incrustación / P / Invoke-API.

Espero que esto te haga comenzar.