我正在创建一个服务器,它必须作为特权助手工具在OS X上运行。在这个服务器中,我尝试使用NSSocketPort、NSFileHandle和NSNotificationCenter在侦听套接字上执行异步IO。但是,NSNotificationCenter拒绝调用通知处理程序。相关代码如下:
NSSocketPort* sock = [[NSSocketPort alloc] initWithTCPPort:8080];
NSFileHandle* listener = [[NSFileHandle alloc] initWithFileDescriptor:sock.socket closeOnDealloc:NO]
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(onConnection:) name:NSFileHandleConnectionAcceptedNotification object:nil]我的主线程正在运行[NSRunLoop.mainRunLoop run],所以这不是问题所在。我尝试在addObserver:调用中将'object‘设置为'listener’,但这没有什么区别。
发布于 2012-05-18 12:00:09
在创建NSFileHandle实例之前,请尝试注册为观察者。如果通知是在init方法期间发送的,则说明您注册得太晚了。(我没有使用NSFileHandle的具体经验,所以这只是一种可能的修复方法。)
https://stackoverflow.com/questions/10646350
复制相似问题