目标C语言 Xcode:iPhone在调用"sendSynchronousRequest"时冻结



我有一个问题,不知道如何解决,
在我的应用程序中,我有一个UIWebView加载pdf的"文件夹1/1.pdf"开始

加载本身可以正常工作但是如果我在我的应用程序中调用一个函数来检查我是否在同一文件夹中有一个2.pdf文件,它就会卡住,没有错误,没有任何东西

我调用的函数是:

- (void)isValidURL
{
    int i = 1;
    NSString *folder = @"folder1";
    NSURL *url = [NSURL URLWithString:[baseUrl stringByAppendingFormat:@" %@/%d.pdf",folder,i]];
    NSURLRequest *req = [NSURLRequest requestWithURL:url];
    NSHTTPURLResponse *res = nil;
    NSError *err = nil;
    [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];
}  

任何帮助都非常感谢!

谢谢! !

同步请求在执行数据传输时冻结UI,如果出现问题,它们可以无限期地挂起UI。

如果你只是检查一个本地文件夹中的文件,你绝对不需要使用NSURLRequest,这是严重的过度使用和错误的工具。

您希望使用NSFileManagerfileExistsAtPath:方法。容易得多。NSURLRequest是用来查看整个网络的


编辑添加

如果你说文件实际上是跨网络的,那么你想要做一个异步的请求,这样UI可以继续工作,即使它只是显示一个旋转的活动指示器。您可以使用NSURLConnectioninitWithRequest并设置委托等,或者您可以使用出色的ASIHTTPRequest库,它可以完成几乎所有的工作。

你可以在Apple的TopPaid示例应用中找到更好的演示。在这个项目中,他们很好地解释了如何通过发送异步请求而不锁定用户界面来处理图像下载。在您的情况下,您可以下载文件并将其保存为PDF或其他任何您想要的文件系统。

我认为你可以很容易地在自己的异步函数中编写,这将需要少量的代码。

最新更新