Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Может ли приложение iOS XCode ссылаться на сборки MonoTouch?

Автор вопроса: AaronОтветов: 1

Я обдумываю, как лучше разделить усилия между командами для нового проекта. У нас есть группа служб приложений Windows C# и небольшая группа iOS Objective-C. Также вероятно, что рано или поздно потребуется приложение для Android.

Сборка уровня домена/API на устройстве, которое вызывает наши службы и обрабатывает синхронизацию с локальным хранилищем данных, является логическим компонентом, который нужно написать на C# и скомпилировать с помощью MonoTouch. Затем команда Objective-C ссылается на этот компонент. Это возможно? Я много читал о MonoTouch, ссылающемся на сборки C, но может ли это работать наоборот?

Было бы здорово услышать о каком-либо опыте использования этого подхода, если это возможно!

Спасибо, Аарон.

ios

Ответы

Ответ 1 · рейтинг 2 · miguel.de.icaza

Хотя это технически возможно, сегодня нет простого способа сделать это.

Лучшее, что вы можете сделать сейчас, это запустить приложение из C#, а затем, если хотите, передать управление вашему коду на Objective-C. Во время запуска C# вы можете зарегистрировать методы, которые будут вызываться кодом Objective-C, используя P/Invoke для вызова чего-то вроде:

delegate void some_callback_t (int parameter1, int parameter2);

[DllImport ("__Internal")]
void SetCallback (some_callback_t callback);

static void mycallback (int parameter1, int parameter2)
{
    // Here goes your C# logic to be called by C
}

Затем вы звоните:

SetCallback (mycallback);

Обратите внимание, что mycallback должен быть статическим методом (ограничение статической компиляции). Затем ваш код Objective-C может потреблять службы, реализуя что-то вроде:

 typedef (*callback_t) (int p1, int p2);
 callback_t callback;
 void SetCallback (callback_t cb)
 {
     callback = cb;
 }

 void InvokeCSharp ()
 {
     callback (1, 2);
 }

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы