0
我已使用此tutorial中的AcceptCallBack方法,該方法允許我的應用程序從另一臺計算機接收文件。當我嘗試在AcceptCallBack方法中使用self
時,出現以下錯誤「使用未聲明的標識符'self'」,我想知道是否有任何方法可以使用self
來調用該類中的其他方法?如何從AcceptCallBack方法引用類?
我已使用此tutorial中的AcceptCallBack方法,該方法允許我的應用程序從另一臺計算機接收文件。當我嘗試在AcceptCallBack方法中使用self
時,出現以下錯誤「使用未聲明的標識符'self'」,我想知道是否有任何方法可以使用self
來調用該類中的其他方法?如何從AcceptCallBack方法引用類?
AcceptCallBack
是一個C函數,並不是任何類的一部分,所以沒有self
指針。但是,有一種方法可以獲得傳遞給該函數的void *,它可以是任何您需要的;你可以通過這種方式傳遞一個指向你的self
對象的指針。
具體來說,函數原型爲:
void AcceptCallBack(
CFSocketRef socket,
CFSocketCallBackType type,
CFDataRef address,
const void *data,
void *info)
你可能想info
指向你的對象。要做到這一點,你需要設置的CFSocketContext
的信息員成爲您self
指針:
struct CFSocketContext {
CFIndex version;
void *info;
CFAllocatorRetainCallBack retain;
CFAllocatorReleaseCallBack release;
CFAllocatorCopyDescriptionCallBack copyDescription;
};
,當你在CFSocketCreate
建立回調。然後,當調用AcceptCallBack
時,所需的指針將被傳遞。這是由你來確保這個指針是有效的;如果你的self
被釋放,那麼指針將是無效的。