2010-01-24 58 views
4

我有一個NSURLConnection工作正常,當我允許加載完成。但是,如果用戶點擊後退按鈕,這意味着webview將消失,我想取消正在進行的NSURLConnection。但是,如果有web視圖調用這個類時viewWillDissapear被調用,然後我做的:創建和取消NSURLConnection

[conn cancel] 

我得到一個NSINValidArgument例外。

NSURLConnection *conn; 

異步從這裏開始:

連接在.h文件中定義的實例數據

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:articleURL]]; 

    if ([NSURLConnection canHandleRequest:request] && reachable) { 
     // Set up an asynchronous load request 
     conn = [NSURLConnection connectionWithRequest:request delegate:self]; 
     loadCancelled = NO; 
     if (conn) { 
      NSLog(@" ARTICLE is REACHABLE!!!!"); 
      self.articleData = [NSMutableData data]; 
     } 
    } 

回答

11

爲什麼你得到了例外是要保存的原因一個autorelease對象給一個實例變量。
當用戶點擊返回按鈕時,「conn」會立即自動釋放。之後,你打電話取消。因此,你有例外。
爲了防止出現這種情況,您應該在將它保留在實例變量中時保留NSURLConnection對象。

conn = [[NSURLConnection connectionWithRequest:request delegate:self] retain]; 

conn = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

不要忘記在dealloc方法釋放此。

+0

這樣做。有更多的學習重新管理。謝謝。 – 2010-01-24 06:13:54

+0

我很高興能幫上忙。 – tomute 2010-01-24 06:16:36