2012-01-18 61 views
1

我有一個奇怪的問題是崩潰我的應用程序,我想就如果可能的一些意見。NSURLConnection崩潰的應用程序,但只有在打開和關閉電子郵件應用程序

我有一個NSURLConnection,將POST數據提交給一個外部PHP文件,並得到一個顯示在iPhone上的迴應。

這一切工作正常,可以無誤地做很多次,沒有任何泄漏出現在分析和沒有任何崩潰。

該應用程序還有一個「電子郵件回覆」選項,如果這被按下,電子郵件程序打開,這一切都正常工作,沒有問題。

但是,在關閉電子郵件程序並再次返回到主應用程序時,如果現在按下「獲取數據」按鈕,並且再次完成NSURLConnection,則應用程序立即崩潰。

我不能在模擬器上測試它,因爲它不能在模擬器上打開電子郵件程序 - 這隻能在iPhone上進行實際測試。在Xcode中完成的所有測試和分析顯示出良好,並沒有指出任何問題。

我所有的NSURLConnection的代碼發佈和檢索數據如下:

- (void)FetchData { 
result.text = @""; 
emailbutton.hidden = YES; 
emailbutton.enabled = NO; 

NSString *queryStringFull = [queryStringFirst stringByAppendingString:textField.text]; 

NSURL *url = [NSURL URLWithString:@"http://www.mydomain.com/mypage.php"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 
NSData *requestData = [queryStringFull dataUsingEncoding:NSUTF8StringEncoding]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody: requestData]; 
[NSURLConnection connectionWithRequest:(request) delegate:self]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
responseData = [[NSMutableData alloc] init]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
[responseData appendData:data]; 
} 

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
if (![responseString isEqualToString:@"error"]) { 
    result.text = responseString; 
    emailbutton.hidden = NO; 
    emailbutton.enabled = YES; 
} 
[responseString release]; 
[responseData release]; 
} 

我會是什麼原因造成這一點,如何解決它的任何意見或想法非常感謝。

+1

與什麼衝突?發佈您的崩潰日誌。 – 0x8badf00d 2012-01-18 00:37:16

回答

0

其實,它根本不是NSURLConnection!

原來這是在NSURLConnection調用之後發生的圖像調用。該圖像是在viewdidload中定義的,已發佈,然後在應用程序從背景中返回後未定義。

將「保留」添加到viewdidload中的圖像定義解決了問題!

相關問題