Ну, я не уверен, возможно ли это, но имейте в виду, что у каждого метода Objective-C есть два неявных / скрытых аргумента, self
и _cmd
. IMP
обычно typedef
, вот так:
typedef id (*IMP)(id,SEL,...);
Если вы хотите использовать методы и селекторы jerry-rig, вам нужен метод, который выглядит следующим образом:
void func (id self, SEL _cmd, void *firstParameter);
Но даже после этого вам нужно зарегистрировать имя селектора во время выполнения, затем вам нужно связать этот селектор с методом, но это делается для каждого класса в отдельности (т.е. классы могут иметь разные реализации то же имя селектора), так что вам, по крайней мере, нужен фиктивный класс.
Намного проще создать фиктивный класс и фиктивный экземпляр этого класса, чем вызывать различные API времени выполнения только для того, чтобы NSThread
вызвал одну функцию Си.