如何使用 void 参数(如“objc_msgSend”)实现函数

How to implement a function with a void parameter like 'objc_msgSend'

提问人:Wang.Ying 提问时间:1/25/2022 最后编辑:kaylumWang.Ying 更新时间:1/25/2022 访问量:124

问:

我正在用objective-c编码。我发现'objc_msgSend'的参数和返回值都是void类型。但是我可以在调用它之前将其转换为适当的函数指针类型。我的问题是我怎样才能实现一个带有void类型参数和返回值的函数,并像'objc_msgSend'一样调用它?谢谢!

// declaration
OBJC_EXPORT void objc_msgSend(void /* id self, SEL op, ... */ )
    OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);

// how I used it.
 ((void(*)(id, SEL))(void *)objc_msgSend)(self, @selector(originalMethod));

目标-C

评论

0赞 Willeke 1/25/2022
您是否尝试过将其声明为并将其用作?void myFunc(void /* id self, SEL op, ... */ )((void(*)(id, SEL))(void *)myFunc)(self, @selector(originalMethod))
0赞 Willeke 1/25/2022
也许这会有所帮助:Mike Ash 的 objc_msgSend 新原型
0赞 Wang.Ying 1/25/2022
@Willeke谢谢!我还发现了这个:build-objc_msgsend

答: 暂无答案