2012-05-18 48 views
0

我創建的服務器必須作爲OS X上的特權幫助工具運行。其中,我試圖使用NSSocketPort,NSFileHandleNSNotificationCenter在偵聽套接字上執行異步IO。但是,NSNotificationCenter拒絕調用通知處理程序。下面是相關代碼:基礎工具中的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',但這沒有什麼區別。

回答

1

嘗試在創建NSFileHandle實例之前註冊爲觀察者。如果在init方法期間發送通知,則註冊太遲。 (我沒有與NSFileHandle的具體經驗,所以這只是一個可能的修復預感。)

+0

沒有什麼區別,但感謝一個很好的建議。 –