#c #objective-c #ios
#c #objective-c #iOS
Вопрос:
Я пишу библиотеку C , которая должна будет выполнять некоторую обработку событий. Я намерен вызвать это в среде Android и Android, используя JNI, и я также намерен вызвать его из приложения для iPhone. Итак, я хочу знать лучшую библиотеку или решение C для обработки событий? Мне нужна лицензия типа MIT или BSD. Или, может быть, я мог бы написать это на objective C и распространять на обоих типах устройств? У меня нет Mac, поэтому сейчас нет XCode. Мне нужно простое решение, без проблем с потоками, Без лицензий GPL и т. Д.Или есть способ сделать это на родном C легко без библиотеки. Я ищу рекомендации по этому поводу. Вероятно, он также будет подключаться к SQLite. Спасибо
Комментарии:
1. В чем проблема с лицензией GPL?
2. Это зависит от того, что вы хотите, разве простой шаблон наблюдателя не будет обрабатывать большинство вещей?
3. Ну, во-первых, это GPL 1,2,3 и т.д. Что не так с BSD? или MIT?
4. Я полагаю, это было бы. Я имею в виду, что мне нравится идея обработки событий или команд. Да, я думаю, что observer, вероятно, сработает.
5. Я в основном пытаюсь снизить риски любых потоков или утечек памяти и т.д. Мне также не нравится думать о проблемах лицензирования.
Ответ №1:
Вы можете приготовить что-то очень простое, используя std::tr1::function . Событие может быть просто оболочкой функции:
#include <tr1/functional>
typedef std::tr1::function<void ()> event;
void my_event_handler()
{
// handler code here
}
class C {
public:
void my_method_handler()
{
// handler code here
}
};
int main(int argc, char* argv[])
{
event ev;
ev = amp;::handler; // assign an event handler
ev(); // fire an event
// same thing, but using a method as a handler
C c;
ev = std::tr1::bind(amp;C::my_method_handler, amp;c);
ev();
}
Приведенный выше код очень переносим, я запускаю что-то подобное на iOS, Android, OSX, Windows и cygwin.