我正在開發一個應用程序,它將本機聯繫人上傳到服務器,然後獲取響應(JSON,一個已安裝該應用程序的聯繫人列表)。當本地聯繫人數量足夠大時,服務器響應速度會很慢並且不穩定。用戶不能做其他事情。所以我把網絡請求放入後臺線程。每次我將上傳100個聯繫人,完成一些任務,然後再接下100個聯繫人,直到完成循環。爲什麼我的後臺工作線程阻塞UI線程?
但是在運行中,結果並不如預期。後臺線程正在運行,它保持請求服務器。 UI線程被阻塞,我仍然無能爲力。
這是在後臺線程中導致長循環嗎?雖然我有2個線程,但他們會競爭CPU資源(測試設備是iPod,1個核心,而我認爲這可能與核心數量無關)?
任何人都可以告訴我如何處理這種情況的提示?提前致謝!
更新:
我找到了根本原因。 App委託中的全局變量被設置爲錯誤值,因此UI行爲很奇怪。我通過評論所有網絡請求方法發現了這個。所以這個問題與多線程無關。對不起,麻煩了。
您使用的是GCD嗎? – CodaFi
@CodaFi 不,我在應用程序委託中使用NSOperationQueue。 100個聯繫人的每個請求都會被放入隊列中。 – LetBulletFlies
我想更好的問題是:你可以使用GCD嗎?或者你需要瞄準iOS 3.x? – CodaFi