Cocoa 基础工具中的NSnIFTIC中心

Cocoa 基础工具中的NSnIFTIC中心,cocoa,networking,foundation,Cocoa,Networking,Foundation,我正在创建一个必须在OS X上作为特权助手工具运行的服务器。在该服务器中,我试图使用NSSocketPort、NSFileHandle和NSNotificationCenter在侦听套接字上执行异步IO。但是,NSNotificationCenter拒绝调用通知处理程序。以下是相关代码: NSSocketPort* sock = [[NSSocketPort alloc] initWithTCPPort:8080]; NSFileHandle* listener = [[NSFileHandle

我正在创建一个必须在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.mainlunloop run]
,因此这不是问题所在。我已尝试在
addObserver:
调用中将“object”设置为“listener”,但没有任何区别。

在创建
NSFileHandle
实例之前,尝试注册为观察员。如果在init方法期间发送通知,则说明您注册太晚。(我没有使用
NSFileHandle
的具体经验,因此这只是一个可能的修复方法的预感。)