当主机无法访问时,NSString stringWithContentsOfURL 会使应用程序崩溃

Dmi*_*y R 6 networking nsstring ios

这确实是一个棘手的问题,我使用的代码如下:

NSError *error = nil;
    NSString *guideText = [NSString stringWithContentsOfURL:url     encoding:NSUTF8StringEncoding error:&error];
Run Code Online (Sandbox Code Playgroud)

除非我将 URL 指向的服务器关闭,否则代码会像魅力一样工作。它发出大约 1 分钟的暂停,但随后方法调用返回并出现错误。到目前为止,一切都很好。当我在模拟器中或在调试器下的设备上运行应用程序时,它的行为方式相同。但是,如果我在没有调试器的设备上运行该程序,它会在暂停后崩溃。我尝试将代码包装在 @try/@catch 中,但没有任何帮助。实际上调试器没有看到任何问题,所以这对我来说有些神秘。我尝试添加一些保护代码,如下所示:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
if ([NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil])
    // here code above       
[request release];
Run Code Online (Sandbox Code Playgroud)

该代码的行为与之前的完全相同。程序在此暂停一分钟,然后正常运行,除非它在没有调试器的设备上运行。