我有一個應用程序與四個選項卡。在每個選項卡中,我使用nsurlconnection連接到遠程服務器,獲取響應並相應顯示。在測試應用程序時,我隨機出現崩潰。如果我試圖再次重現崩潰,我不會崩潰。我不明白什麼是墜機的根源。我啓用NSZombie,符號化的崩潰日誌,檢查內存泄漏,但沒有運氣。iPhone應用程序隨機崩潰exc_bad_access
我在Xcode 3中啓動了項目,現在我將相同的項目導入到Xcode 4.2中,那麼Xcode的兼容性會有問題嗎?
而且我在所有標籤中使用nsurlconnection的相同名稱,如 在標籤1中,我將nsurlconnection定義爲conn,而標籤2將nsurlconnection定義爲conn。
此定義是否會引發任何問題?
請幫我解決這個隨機崩潰
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: url];
conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(label != nil){
progressView = [[ProgressView showHUDAddedTo:self.tabBarController.view animated:YES] retain];
progressView.labelText = label;
}
[request release];
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"didReceiveresponse");
if ([response isKindOfClass: [NSHTTPURLResponse class]]) {
if([(NSHTTPURLResponse *)response statusCode] == 200){
}
else{
//show Connection Error Alert
}
}
responseData = [[NSMutableData alloc]init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"didReceiveData");
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[progressView hide:YES];
NSLog(@"didFail");
//show failed alert
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"didfinish loading");
if([responseData length] > 0)
{
//handles response data
}
}
在哪裏取消nsurlconnection? – MobileDev
在閱讀了更多內容之後,您可能無法取消請求。所以你需要做的是確保何時請求完成它什麼都不做,因爲我猜目前它試圖更新不同標籤上的UI? – Darren
顯示請求完成時調用的代碼 – Darren