2011-11-04 106 views
0

這聽起來可能是一個新手問題,但我是iOS開發新手。正確處理[[NSURLConnection alloc] initWithRequest:...]

我推了一個導航控制器的視圖,並在該視圖上點擊一些按鈕我運行下面的代碼。

mUploadeImageConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; 
[request release]; 
if (mUploadeImageConnection) { 
    mUploadImageResponseData = [[NSMutableData data] retain]; 
} else { 
[mUploadeImageConnection release]; 
} 

我還實施了連接狀態處理

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

以下方法當我發出mUploadeImageConnection請求時,它需要一些時間來回應。但我並沒有等待回覆,並按下導航後退按鈕,即我彈出視圖,但我仍然得到了四個連接處理函數的工作方式,但彈出了發送請求的視圖。在didFailWithError的情況下,我顯示了一些alertView,在這種情況下將顯示奇怪,即顯示alerView關於某個已經彈出的視圖(不可見/用戶來到前一個視圖)。

所以現在我的問題

  • 什麼是處理這種情況的最佳做法是什麼?
  • 如何讓我的四個功能停止?

回答

1

如果你想停止的要求,讓你在NSURLConnection的一個變量,並調用

[myConnection cancel]; 

當用戶單擊後退按鈕。

舉例來說,你可以叫你的導航控制器的委託取消,通過測試使用委託方法

– navigationController:willShowViewController:animated: 

如果將要顯示的是的viewController你RootViewController的。

+0

哈,謝謝,真的很簡單的解決方案,我真的需要更多的練習:) – deimus

+0

不用擔心,樂意幫忙=) 不要猶豫,投票並驗證我的答案! – MatLecu