このチュートリアルにあるAcceptCallBackメソッドを使用しました。これにより、アプリが別のコンピューターからファイルを受信できるようになります。self
AcceptCallBackメソッドで使用しようとすると、「宣言されていない識別子'self'の使用」というエラーが発生self
します。クラス内の他のメソッドを呼び出すために使用できる方法があるかどうか疑問に思いました。
1 に答える
0
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
、ポインタは無効になります。
于 2013-02-26T06:04:24.833 に答える