我有一个请求JSON字符串的程序。我创建了一个包含下面的connect方法的类。当根视图出现时,它会向此类和方法请求为根视图加载一些数据。当我测试错误代码(通过将URL主机更改为127.0.0.1)时,我希望显示警报。行为是根视图变黑,应用程序中止而没有警报。控制台上的调试模式也没有错误。有关这种行为的任何想法?我一直在四处寻找这些提示几个小时无济于事。在此先感谢您的帮助。
注意:调用(错误)的条件,以及UIAlertView代码。
- (NSString *)connect:(NSString *)urlString {
NSString *jsonString;
UIApplication *app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
NSError *error = nil;
NSURLResponse *response = nil;
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSURLRequest *req = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
NSData *_response = [NSURLConnection sendSynchronousRequest: req returningResponse: &response error: &error];
if (error) {
/* inform the user that the connection failed */
//AlertWithMessage(@"Connection Failed!", message);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oopsie!"
message:@"Unable to connect! Try later, thanks."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
[alert release];
} else {
jsonString = [[[NSString alloc] initWithData:_response encoding:NSUTF8StringEncoding] autorelease];
}
app.networkActivityIndicatorVisible = NO;
[url release];
return jsonString;
}
答案 0 :(得分:0)
将if ( error )
替换为if ( ! _response )
。
NSURLConnection
的{{1}}文档:
.... 错误 如果在处理请求时发生错误,则使用Out参数。可能是NULL。
返回值 下载的URL请求数据。如果无法创建连接或下载失败,则返回nil。
答案 1 :(得分:0)
调用[alert show]时UIWindow是否已经存在? UIAlertView show应该在视图层次结构中插入警报,但是如果还没有窗口/根视图,则无法将其插入到[alert release]中,只是过早地释放它。