Ios 选项卡控制器冻结,手机在[NSString stringWithContentsOfURL:url]之后变慢;
一旦出现这种情况,我就不能再使用tab控制器,我正在测试的手机就会变得非常迟钝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
NSString *webData= [NSString stringWithContentsOfURL:url];
知道为什么会这样吗
网址是:
NSURL *url = [NSURL URLWithString:str];
问题是我一直在拉一个小的HTML,这使事情冻结和滞后
我在它周围包装了一些条件,这样它只在我真正需要的时候才拉HTML,而且一切都加快了。问题是
stringWithContentsOfURL:
是一个阻塞调用。如果要使用该方法,应该在后台线程上调用它。当你在主线程上调用它时,你将无法与你的应用程序交互,直到它完成下载字符串
基本上,当您调用stringWithContentsOfURL:
时,被调用的线程在调用完成之前将无法执行任何其他操作。如果您是从UI线程调用它,这意味着您的应用程序将无法响应,例如触摸事件。如果你把它放在后台线程上,或者添加更复杂的非阻塞网络,你就不会有这个问题
从iOS 7开始,它也被弃用;建议您使用
stringWithContentsOfURL:encoding:error:
。我想您可能正在加载一个非常大的字符串。这是we页面的源HTML…我可以看出这会导致一些延迟,但为什么它会阻止我的选项卡栏工作?如果它是大型网页的HTML源,这就解释了。加载大量内存将阻塞主线程。你可以在后台线程中尝试这样做。它不是一个庞大的网站,只是有一个时间的文本列表。