2012-01-18 32 views
1

有沒有什麼辦法可以將一個對象方法而不是一個函數傳遞給想要一個SCNetworkReachabilityCallBack作爲它的參數的函數?傳遞一個對象方法作爲SCNetworkReachabilityCallBack

這裏是SCNetworkReachabilityCallBack是如何定義的:

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

回答

0

通過發送消息的塊,然後讓你的C回調執行塊! :D

基本上,C回調將充當膠水代碼。由於Objective-C方法的IMP永遠不會是與回調兼容的類型,所以在到達Objective-C消息分派之前,您總是需要至少一個間接級別。如果你需要攜帶更多的狀態而不僅僅是對象,一個塊可以幫助你,但是C函數存根不會去任何地方。

+0

嗯,我想我可能會接受這一點,所以沒有C膠就不可能。 – houbysoft 2012-01-19 00:23:24

0

爲了安全起見,你可以寫一些C或C++膠水代碼,並通過該功能,那麼它會打電話到您的對象的方法。

+0

是的,這就是我現在正在做的事情,但我認爲如果有直接傳遞對象方法的方法會更清晰。 – houbysoft 2012-01-18 22:39:09

相關問題