基础工具中的NSNotificationCenter

时间:2012-05-18 03:31:00

标签: cocoa networking foundation

我正在创建一个必须在OS X上作为特权助手工具运行的服务器。在其中,我尝试使用NSSocketPortNSFileHandleNSNotificationCenter来执行异步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:调用中将“对象”设置为“侦听器”,但这没有任何区别。

1 个答案:

答案 0 :(得分:1)

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