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