我正在使用AFNetworking客戶端對象,它爲XML文檔提出異步請求並對其進行分析。NSNotificationCenter - 等待通知發佈而不阻塞主線程的方式?
還使用NSNotificationCenter在文檔解析完成後發佈通知。
有沒有一種方法來等待爲通知發佈而不阻塞主線程?
E.g代碼:
-(void)saveConfiguration:(id)sender {
TLHTTPClient *RESTClient = [TLHTTPClient sharedClient];
// Performs the asynchronous fetching....this works.
[RESTClient fetchActiveUser:[usernameTextField stringValue] withPassword:[passwordTextField stringValue]];
/*
* What do I need here ? while (xxx) ?
*/
NSLog(@"Fetch Complete.");
}
基本上我想知道什麼樣的代碼,我需要在上述指定區域,以確保等待直到函數的獲取已經完成?
因爲它現在我會看到「Fetch Complete」。在提取完成之前,在調試控制檯中調用。
我嘗試添加一個BOOL標誌提供給TLHTTPClient類:
BOOL fetchingFlag;
然後嘗試:
while([RESTClient fetchingFlag]) { NSLog(@"fetching...); }
當這個類接收它設置RESTClient.fetchingFlag = FALSE的通知;這應該在技術上殺死while循環嗎?除了我的while循環無限運行?!
你可以在另一個線程中等待嗎? – MechEthan 2012-04-19 15:16:37
你可以在單獨的線程中進行解析 – Kamal 2012-04-19 15:16:50
如果你註冊了一個通知,你已經在等待了,而沒有阻塞主線程,對吧? – 2012-04-19 15:41:12