NSData + dataWithContentsOfURL默認有任何類型的緩存? 有沒有人嘗試過使用這種方法的一些問題,從網上獲取數據的最有效方法是什麼?NSData dataWithContentsOfURL緩存
回答
該文檔沒有說它會緩存,所以我認爲我們應該假設他們不做任何緩存。哪些類型的數據你想獲得
的UIImage:是的,我認爲你應該使用的NSData
視頻:你應該使用的MPMoviePlayerController的流
文字:我想你可以做正常NSUrlConnection。它也有異步,同步和緩存
使用ASIHTTPRequest。這是一個第三方的HTTP客戶端庫,使得網絡交互更簡單,並且具有非常好的緩存功能。
更新:剛剛得到這個答案downvote,這是一個很好的提醒回來和更新。 Lot自10年8月以來發生了變化。最值得注意的是:ASIHTTPRequest現在已被棄用,其作者鼓勵人們使用別的東西。 AFNetworking似乎是一種流行的選擇。
用upvote替換我的downvote。顯然,沒有什麼是個人的,我只是不希望人們認爲這仍然是一個好的答案。良好的更新工作。 :) – 2012-02-24 23:15:14
@StevenFisher - 我的SO歷史中我衷心推薦ASIHTTPRequest的場所數量驚人。我指望downvotes幫助我找到他們! – 2012-02-27 18:08:21
您可能需要考慮刪除答案,至少在這種情況下......我認爲您不必回過頭來看看所有內容。 – 2013-04-17 23:57:08
最好使用NSURLConnection。你給它的NSURLRequest可以配置爲按照你想要的方式進行緩存,但是默認情況下,它只會對響應中包含相應標題的HTTP資源執行標準緩存。
這是我做的:
NSData *data = [NSURLConnection sendSynchronousRequest:
[NSURLRequest requestWithURL:url]
returningResponse:nil
error:&error];
請務必把這個在NSOperationQueue這不是你的主隊列或以其他方式爲主線卸載它,但。或者,使用異步請求。
這對我有用。 – razorhead 2015-03-09 13:51:41
如果你需要的只是從url下載圖片,不用費心去使用任何庫,只需一個簡單的dispatch_async調用就可以。像這樣:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)
{
NSData * data = [NSData dataWithContentsOfURL:imageUrl];
dispatch_async(dispatch_get_main_queue(), ^(void){
self.image = [UIImage imageWithData:data];
});
});
問題是圖像沒有被緩存,所以如果相同的圖像在很多地方被重用,這種方法是網絡繁重的。 – 2016-08-08 02:37:52
看來,iPhone5s的默認策略是緩存(unlinke iPhone5及更早版本)。
您可以通過選項參數處理NSData的緩存策略。例如,如果你想避免緩存,可以使用下面的剪輯:
[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:NSDataReadingUncached error:nil];
- 1. dataWithContentsOfURL緩存嗎?
- 2. NSData dataWithContentsOfURL內存泄漏
- 3. NSData dataWithContentsOfURL錯誤?
- 4. NSData dataWithContentsOfUrl需要javascript
- 5. NSData dataWithContentsOfURL:返回零
- 6. 設置的NSData dataWithContentsOfURL超時
- 7. 來自[NSData dataWithContentsOfURL:]的NSString
- 8. NSData緩存iOS
- 9. NSData +(id)dataWithContentsOfURL:(NSURL *)aURL選項:(NSDataReadingOptions)掩碼錯誤:(NSError **)errorPtr:自動緩存?
- 10. 緩存NSData(與UIImages)
- 11. 單元測試方法與NSData的dataWithContentsOfURL
- 12. 我應該發佈NSData的dataWithContentsOfURL嗎?
- 13. NSData dataWithContentsOfURL:在iOS 6停止工作
- 14. NSData dataWithContentsOfURL泄漏,datawithContentsOfURL:options:錯誤報告URL爲零?
- 15. 等待NSData的dataWithContentsOfURL:加載完成,然後
- 16. NSData datawithcontentsofurl是否有任何超時期限?
- 17. NSData的dataWithContentsOfURL:選項:錯誤:無效的服務器響應
- 18. 在更新Xcode 6.4到Xcode 7.0後NSData dataWithContentsOfURL爲null
- 19. NSData datawithcontentsOfURL不能在我的項目中工作
- 20. 實現UIActivityIndicatorView而NSData dataWithContentsOfURL正在下載
- 21. 爲什麼NSData dataWithContentsOfURL有時會返回NULL值?
- 22. dataWithContentsOfURL與downloadTaskWithURL
- 23. 字節緩衝NSData
- 24. iphone:NSData的dataWithContentsOfURL返回null
- 25. 在iOS上,因爲dataWithContentsOfURL:選項:錯誤:不緩存數據,這是否意味着dataWithContentsOfURL緩存數據的選項?
- 26. dataWithContentsOfURL和HTTP 302重定向
- 27. 異步NSData仍然在沒有緩存的內存中
- 28. dataWithContentsOfURL在IOS錯誤256 6
- 29. iOS UIImageView dataWithContentsOfURL返回空
- 30. dataWithContentsOfURL中是否存在transactionReceipt數據?
我需要獲取XML格式的配置文件,我應該使用NSUrlConnection,對不對? – cesarnicola 2010-08-23 15:25:35
是的,我認爲你應該使用NSUrlConnection,並做異步以防止阻止UI – vodkhang 2010-08-23 15:31:29