将对象方法作为 SCNetworkReachabilityCallBack 传递

发布于 2024-12-27 20:50:59 字数 390 浏览 3 评论 0原文

有什么方法可以将对象方法而不是函数传递给需要 SCNetworkReachabilityCallBack 作为其参数的函数吗?

SCNetworkReachabilityCallBack 的定义方式如下:

typedef void (*SCNetworkReachabilityCallBack)   (
                        SCNetworkReachabilityRef    target,
                        SCNetworkReachabilityFlags  flags,
                        void                *info
                        );

Is there any way I could pass an object method instead of a function to a function wanting a SCNetworkReachabilityCallBack as its argument?

Here is how SCNetworkReachabilityCallBack is defined:

typedef void (*SCNetworkReachabilityCallBack)   (
                        SCNetworkReachabilityRef    target,
                        SCNetworkReachabilityFlags  flags,
                        void                *info
                        );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

物价感观 2025-01-03 20:50:59

传递一个发送消息的块,然后让您的 C 回调执行该块! :D

基本上,C 回调将充当粘合代码。由于 Objective-C 方法的 IMP 永远不会是与回调兼容的类型,因此在进行 Objective-C 消息分派之前,您始终需要至少一层间接。如果您需要携带更多状态而不仅仅是对象,块可能会帮助您,但 C 函数存根不会去任何地方。

Pass a block that sends the message, then have your C callback execute the block! :D

Basically, the C callback is going to act as glue code. Since an Objective-C method's IMP will never be of a type compatible with the callback, you are always going to need at least one level of indirection before you get to an Objective-C message dispatch. If you need to carry more state than just the object, a block may help you, but that C function stub isn't going anywhere.

凡间太子 2025-01-03 20:50:59

为了安全起见,您可以编写一些 C 或 C++ 粘合代码并传递该函数,然后该函数将调用您的对象方法。

To be safe, you could write some C or C++ glue code and pass that function which would then call into your object method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文