我使用了本教程中的 AcceptCallBack 方法,它允许我的应用程序从另一台计算机接收文件。当我尝试self
在 AcceptCallBack 方法中使用时,出现以下错误“使用未声明的标识符'self'”,我想知道是否有任何方法可以self
用来调用类中的其他方法?
问问题
151 次
1 回答
0
AcceptCallBack
是一个 C 函数,不属于任何类,所以没有self
指针。但是,有一种方法可以将 void* 传递给函数,它可以是您需要的任何东西;您可以通过这种方式将指针传递给您的self
对象。
具体来说,函数原型为:
void AcceptCallBack(
CFSocketRef socket,
CFSocketCallBackType type,
CFDataRef address,
const void *data,
void *info)
您可能想要info
指向您的对象。为此,您需要将 info 成员设置CFSocketContext
为您的self
指针:
struct CFSocketContext {
CFIndex version;
void *info;
CFAllocatorRetainCallBack retain;
CFAllocatorReleaseCallBack release;
CFAllocatorCopyDescriptionCallBack copyDescription;
};
当您在CFSocketCreate
. 然后当AcceptCallBack
被调用时,你想要的指针就会被传递过去。由你来确保这个指针是有效的;如果你self
被释放,那么指针将无效。
于 2013-02-26T06:04:24.833 回答