2011-05-24 107 views
2

我正在Mac OS X(10.6)上構建一個應用程序。在這個應用程序中,我有一個屏幕,用戶將提供輸入,並將其保存爲本地文件夾中的plist。這個plist文件需要使用HTTP POST服務被傳送到服務器。應該檢查服務器連接,如果連接失敗,文件將保存在本地文件夾中。在一定的時間內,服務器連接將再次被檢查,如果找到,則將所有存儲在本地文件夾中的文件逐個發送。如何獨立運行兩個任務

基本上,GUI應用程序將持續運行以獲取來自用戶的輸入,並且在另一個線程中應該檢查服務器連接併發送文件。

所以我的問題是什麼可能是解決問題的好方法,如果任何人可以發送一些示例代碼,這對我來說會很好。

感謝, 巴潤

+0

我正在使用COCOA/Objective C構建應用程序。 – Barun 2011-05-24 19:22:14

回答

3

有在Objective-C穿線幾種方法!最簡單的策略是NSOperationQueue。重寫NSOperation來處理你的HTTP請求,如果你需要在完成時得到通知,可以選擇設置一個完成塊,將它的一個實例添加到一個NSOperationQueue對象中,並且你很好。如果第一次失敗,則設置NSTimer重新安排上傳時間。你可以使用NSURLConnection來處理網頁內容。請注意,NSURLConnection可以異步連接或阻塞連接。既然你的NSOperation子類已經在一個單獨的線程中運行,你可能想要使用阻塞方法(如果你不需要創建一個併發的NSOperation子類,這是更多的工作)。你也可以使用Grand Central Dispatch的API,將一個新的線程分離到你指定的方法,或者使用普通的老c(我不會推薦最後兩個但很好的提及它們)。作爲獎勵,當您同時運行多個操作時,NSOperationQueue和Grand Central Dispatch都知道「什麼是正確的」,並且會擴展線程數以適應用戶計算機中的核心數量,以獲得最佳性能。

檢查NSOperationQueue,NSOperation和NSURLConnection的文檔。指南和示例項目將包含您所需的所有源代碼,以幫助您開始朝正確的方向發展。

+0

我發現帖子很有意思。您能否請您提供一些給定問題的示例代碼。 – Barun 2011-05-25 18:26:16

+0

正如我所說的,文檔應該有大量的示例代碼。 – 2011-05-25 19:06:34