NSURLConnection崩溃应用程序,但只有在打开和关闭电子邮件应用程序后

时间:2012-01-18 00:13:23

标签: iphone xcode crash nsmutablearray nsurlconnection

我有一个奇怪的问题,即我的应用程序崩溃了,如果可能的话,我想要一些意见。

我有一个NSURLConnection,将POST数据提交到外部PHP文件并获得iPhone上显示的响应。

一切正常,可以多次完成,没有错误,分析中没有任何泄漏,也没有任何崩溃。

该应用程序还有一个“通过电子邮件发送响应”选项,如果按此按钮,电子邮件程序将打开,并且所有工作正常,没有问题。

然而,在关闭电子邮件程序并再次返回主应用程序时,如果现在按下“获取数据”按钮,并再次完成NSURLConnection,则应用程序会立即崩溃。

我无法在模拟器上测试这个,因为它没有在模拟器上打开电子邮件程序 - 这只是在iPhone上进行实际测试。在Xcode中完成的所有测试和分析都表现得很好,并没有指出任何问题。

我的所有NSURLConnection代码都要POST并检索数据如下:

- (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 个答案:

答案 0 :(得分:0)

实际上,根本不是NSURLConnection!

原来是在NSURLConnection调用之后发生的图像调用。图像在viewdidload中定义,已发布,然后在应用程序从后台返回后未定义。

在viewdidload中为图像定义添加“retain”解决了这个问题!