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];
}

但是netClass中的asyncSocket方法,如“didAcceptNewSocket”、“socketDidDisconnect”、“netServiceDidPublish”,没有被调用。

知道怎么称呼它吗?

任何帮助将不胜感激 :-)

4

1 回答 1

1

您需要通过向任何您的 NSNetService 对象发送消息来设置委托setDelegate:- 从您发布的代码中看起来就是“ netService”([netService setDelegate:self];)。

将“ NSApplicationDelegate, NSNetServiceDelegate, GCDAsyncSocketDelegate”放在您的 .h 文件中不会设置委托,它基本上只是让编译器知道您打算实现这些协议的方法。此外,您不应该在NSApplicationDelegate那里,因为您已经有一个应用程序委托。

于 2012-05-21T15:48:59.823 回答