Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 选项卡控制器冻结,手机在[NSString stringWithContentsOfURL:url]之后变慢;_Ios_Iphone_Objective C_Xcode_Ios7 - Fatal编程技术网

Ios 选项卡控制器冻结,手机在[NSString stringWithContentsOfURL:url]之后变慢;

Ios 选项卡控制器冻结,手机在[NSString stringWithContentsOfURL:url]之后变慢;,ios,iphone,objective-c,xcode,ios7,Ios,Iphone,Objective C,Xcode,Ios7,一旦出现这种情况,我就不能再使用tab控制器,我正在测试的手机就会变得非常迟钝 NSString *webData= [NSString stringWithContentsOfURL:url]; 知道为什么会这样吗 网址是: NSURL *url = [NSURL URLWithString:str]; 问题是我一直在拉一个小的HTML,这使事情冻结和滞后 我在它周围包装了一些条件,这样它只在我真正需要的时候才拉HTML,而且一切都加快了。问题是stringWithContents

一旦出现这种情况,我就不能再使用tab控制器,我正在测试的手机就会变得非常迟钝

    NSString *webData= [NSString stringWithContentsOfURL:url];
知道为什么会这样吗

网址是:

NSURL *url = [NSURL URLWithString:str];

问题是我一直在拉一个小的HTML,这使事情冻结和滞后


我在它周围包装了一些条件,这样它只在我真正需要的时候才拉HTML,而且一切都加快了。

问题是
stringWithContentsOfURL:
是一个阻塞调用。如果要使用该方法,应该在后台线程上调用它。当你在主线程上调用它时,你将无法与你的应用程序交互,直到它完成下载字符串

基本上,当您调用
stringWithContentsOfURL:
时,被调用的线程在调用完成之前将无法执行任何其他操作。如果您是从UI线程调用它,这意味着您的应用程序将无法响应,例如触摸事件。如果你把它放在后台线程上,或者添加更复杂的非阻塞网络,你就不会有这个问题


从iOS 7开始,它也被弃用;建议您使用
stringWithContentsOfURL:encoding:error:

我想您可能正在加载一个非常大的字符串。这是we页面的源HTML…我可以看出这会导致一些延迟,但为什么它会阻止我的选项卡栏工作?如果它是大型网页的HTML源,这就解释了。加载大量内存将阻塞主线程。你可以在后台线程中尝试这样做。它不是一个庞大的网站,只是有一个时间的文本列表。