因爲處理器繁重的工作需要放在非UI線程上,所以我們將其視爲後臺線程。現在在我的情況下,我解析來自feed的數據,然後將這些解析的數據插入到DataBase中。我想在我的後臺線程上處理這個「數據解析」,將UI
線程響應保留給用戶交互。現在我的想法是在應用程序啓動後立即開始解析。如何在後臺執行任務?
我完全不知道如何處理IOS中的線程。
請有人幫助我。
因爲處理器繁重的工作需要放在非UI線程上,所以我們將其視爲後臺線程。現在在我的情況下,我解析來自feed的數據,然後將這些解析的數據插入到DataBase中。我想在我的後臺線程上處理這個「數據解析」,將UI
線程響應保留給用戶交互。現在我的想法是在應用程序啓動後立即開始解析。如何在後臺執行任務?
我完全不知道如何處理IOS中的線程。
請有人幫助我。
如果您搜索到多一點,你會發現什麼......這一個是免費的:
// Declare the queue
dispatch_queue_t workingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(workingQueue,
^{
// My background job
dispatch_async(dispatch_get_main_queue(),
^{
// Update the UI
}
);
});
羅漢,如果你希望從服務器下載數據,數據插入的您的設備上的本地數據庫和訂單很重要,那麼我建議您研究異步請求,例如使用ASIHttpRequest或AFNetworking庫。
這比使用多線程編程更好。
我不是大師,但從我自己的經驗來看,我發現多線程編程更適合在後臺進行計算,而不是在後臺下載數據。異步請求更多用於在後臺下載數據。
必須使用合適的工具來完成正確的工作。
希望有所幫助。
恕我直言,最簡單的方法就是用這種NSObject中的方法:
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg;
這應該調用,將在後臺運行,解析數據的方法。
當您完成您可能需要通知主thread.So你可以在主線程中執行完成處理程序:
NSBlockOperation* completionHandler=[NSBlockOperation blockOperationWithBlock:^
{
// Use the parsed data
}];
NSOperationQueue* queue=[NSOperationQueue mainQueue];
[queue addOperation: completionHandler];
PS:這應該在後臺方法使用一次,它已經完成解析數據。 我認爲你需要更新一些可能與主線程產生競爭條件的東西。
'我完全不知道如何處理IOS中的線程.' ...讀書! – Raptor