2010-12-05 72 views
0

我已經寫了一個iOS應用程序多次調用NSUrlConnection從網上下載圖像數據。有時,一個NSUrlConnection在另一個啓動之前尚未完成。我看到了腐敗的jpeg數據,我認爲這是因爲我的didReceiveData委託從兩個單獨的NSUrlConnections中保存數據,並將兩個jpeg數據流合併爲一個數據變量,從而導致損壞。我該如何避免數據損壞與NSUrlConnection的多個實例

我的問題是:避免這種情況的最好方法是什麼?似乎沒有辦法將每個NSUrlConnection實例保存到單獨的數據變量中,或者使每個實例等待,直到保存之前完成前一個實例。

我的代碼基本上遵循蘋果的例子,除了我多次調用loadData函數創建NSURLRequest和NSURLConnection。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

在此先感謝您的幫助。

回答

1

當您的委託連接:didReceiveData:方法被調用時,您將有連接實例作爲第一個參數。所以你需要使用它來跟蹤剛剛接收數據的連接。

Apple的示例維護一個NSMutableData實例。您的代碼需要多個實例,每個活動連接一個實例。

或者,當然,您可以爲每個連接都有一個單獨的委託對象(單個實例)。這可能會更容易。

+0

謝謝!它不會像建立連接那麼簡單:didReceiveData1和connection:didReceiveData2方法,每個NSUrlConnection一個,因爲可能有任何數量的NSUrlConnections正在進行。你將如何去維護多個NSMutableData實例?我是否需要創建一個NSMutableDatas數組並將每個連接寫入它,或者類似的東西? – Jackson 2010-12-05 14:36:42