将对象方法传递为SCNetworkReachabilityCallBack

时间:2012-01-18 22:27:39

标签: objective-c macos argument-passing

有没有办法可以将对象方法而不是函数传递给想要SCNetworkReachabilityCallBack作为参数的函数?

以下是SCNetworkReachabilityCallBack的定义方式:

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

传递发送消息的块,然后让C回调执行块! :d

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