0

我正在创建一个服务器,它必须在 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],所以这不是问题。我曾尝试在通话中将 'object' 设置为 'listener' addObserver:,但这并没有什么区别。

4

1 回答 1

1

NSFileHandle在创建实例之前尝试注册为观察者。如果通知是在 init 方法期间发送的,那么您注册得太晚了。(我没有具体的经验NSFileHandle,所以这只是一个可能修复的预感。)

于 2012-05-18T04:00:09.173 回答