1

別のクラス (「applicationDidFinishLaunching」ではない) からソケットを開始しようとしているので、AppDelegate.mでクラス netClass を呼び出しています。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    netClass *network = [[netClass alloc] init];
    [network startNet];
}

そして、netClassでは、メソッド startNet がソケットを正常に開始します。

- (void)startNet 
{
    [DDLog addLogger:[DDTTYLogger sharedInstance]];
    ...
    [netService publish];
}

しかし、「didAcceptNewSocket」、「socketDidDisconnect」、「netServiceDidPublish」など、netClass の asyncSocket のメソッドは呼び出されません。

それを呼び出す方法はありますか?

どんな助けでも大歓迎です:-)

4

1 に答える 1

1

setDelegate:NSNetService オブジェクトが何であれ、メッセージを送信してデリゲートを設定する必要があります。投稿したコードからは " netService" ( [netService setDelegate:self];) のようになります。

" NSApplicationDelegate, NSNetServiceDelegate, GCDAsyncSocketDelegate" を .h ファイルに入れてもデリゲートは設定されません。基本的には、これらのプロトコルのメソッドを実装するつもりであることをコンパイラに知らせるだけです。また、NSApplicationDelegateアプリのデリゲートが既にあるため、そこにあるべきではありません。

于 2012-05-21T15:48:59.823 に答える