将对象方法作为 SCNetworkReachabilityCallBack 传递
有什么方法可以将对象方法而不是函数传递给需要 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
传递一个发送消息的块,然后让您的 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.
为了安全起见,您可以编写一些 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.