UIAlertView不会显示

时间:2011-02-21 23:01:56

标签: iphone objective-c ios4

我有一个请求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;

}

2 个答案:

答案 0 :(得分:0)

if ( error )替换为if ( ! _response )

NSURLConnection的{​​{1}}文档:

.... 错误 如果在处理请求时发生错误,则使用Out参数。可能是NULL。

返回值 下载的URL请求数据。如果无法创建连接或下载失败,则返回nil。

答案 1 :(得分:0)

调用[alert show]时UIWindow是否已经存在? UIAlertView show应该在视图层次结构中插入警报,但是如果还没有窗口/根视图,则无法将其插入到[alert release]中,只是过早地释放它。