URL 加載系統(tǒng)執(zhí)行的隊(duì)列式異步請求位于隊(duì)列中, 可能位于后臺線程上. 在 iOS 5.0 中增加
只有在知道返回的數(shù)據(jù)不會超出應(yīng)用的內(nèi)存時才使用隊(duì)列式異步請求. 記住, 整個響應(yīng)體都會位于代碼的內(nèi)存中. 如果響應(yīng)很大, 那么可能導(dǎo)致應(yīng)用出現(xiàn)內(nèi)存溢出問題. 此外, 當(dāng)代碼將響應(yīng)解析為所需的格式時可能需要復(fù)制返回的數(shù)據(jù), 這會導(dǎo)致內(nèi)存增加一倍
為所有操作使用單一的 NSOperationQueue, 根據(jù)服務(wù)器的能為以及預(yù)期的網(wǎng)絡(luò)狀況控制當(dāng)前操作的最大數(shù)據(jù)
在處理返回的數(shù)據(jù)前驗(yàn)證錯誤與調(diào)用返回的 HTTP 響應(yīng)狀態(tài)碼
如果源 URL 需要驗(yàn)證, 那么不要使用隊(duì)列異步請求, 因?yàn)樵摴δ懿⒉恢С謱φJ(rèn)證請求做出響應(yīng). 如果服務(wù)需要這種認(rèn)證, 那么可以將 BASIC 認(rèn)證信息放在提供給請求的 URL 中
如果需要向用戶提供進(jìn)度條, 那么不要使用隊(duì)列式異步請求, 因?yàn)檎埱笫窃拥? 無法提供中間的進(jìn)度指示信息
如果需要通過流解析器來漸進(jìn)解析響應(yīng)數(shù)據(jù), 那么不要使用隊(duì)列式異步請求.
如果請求在完成前需要取消, 那么不要使用隊(duì)列式異步請求
隊(duì)列式異步請求