2012-01-18 64 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中的图像定义解决了问题!

相关问题