2014-04-28 84 views
2

我有一個數據解析循環會導致CPU負載過重, 在雙核iPhone上沒問題,但在舊型號iPhone上,UI響應會變慢或甚至一段時間沒有響應...(該操作不能在main線程)我可以在iOS上限制NSOperation/Thread的CPU使用率嗎?

我可以限制CPU使用率嗎?以及如何?

+0

這個問題的答案是即將更新異步任務在UI? 但在我的情況下,數據解析循環是一個與UI無關的後臺任務,並且它在一段時間內保持100%的CPU負載,導致UI無響應。 –

回答

0

NSOperations的方法setThreadPriority:決定了它的隊列中操作的優先級。優先級默認爲正常。嘗試將您的操作設置爲次優級別NSOperationQueuePriorityLow。這將導致該操作的優先級低於主線程,並且應該讓您的UI更具響應能力。因此,當然,您的任務需要更長的時間才能完成。

(編輯使用SetThreadPriority函數,而不是setQueuePriority建議)

+0

似乎'setQueuePriority:'只是在隊列中的操作之間設置優先級。 –

+0

我沒有用NSOperationQueues工作太多。我會用調度隊列做更多的事情,而且我猜根據對文檔的錯誤閱讀,我會犯錯。改爲嘗試'setThreadPriority:'。 –

+0

嘗試將線程優先級設置爲0.1,但對於UI在運行操作時仍然沒有響應... :( –

相關問題