我正在创建一个必须在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:
调用中将“对象”设置为“侦听器”,但这没有任何区别。
答案 0 :(得分:1)
尝试在创建NSFileHandle
实例之前注册为观察者。如果在init方法期间发送通知,则注册太晚了。 (我没有NSFileHandle
的具体经验,所以这只是对可能的修复的预感。)