我正在尝试从另一个类(不在“ 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”。
知道如何称呼它吗?
任何帮助将不胜感激 :-)
最佳答案
您需要通过将setDelegate:
消息发送到您的NSNetService对象的任何位置来设置委托-从您发布的代码中看起来就是“ netService
”([netService setDelegate:self];
)。
在您的.h文件中放置“ NSApplicationDelegate, NSNetServiceDelegate, GCDAsyncSocketDelegate
”并不会设置委托,基本上只是让编译器知道您打算实现这些协议的方法。另外,您不应该在那里NSApplicationDelegate
,因为您已经有一个应用程序委托。
关于objective-c - 全局套接字启动(AsyncSocket),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10676780/