在[NSString stringWithContentsOfURL:url]之后,标签控制器冻结并且手机变得滞后;

时间:2014-02-11 02:46:21

标签: ios iphone objective-c xcode ios7

一旦这一行发生,我就不能再使用标签控制器,而我正在测试的手机变得非常迟钝。

    NSString *webData= [NSString stringWithContentsOfURL:url];

知道为什么会这样吗?

网址是:

NSURL *url = [NSURL URLWithString:str];

2 个答案:

答案 0 :(得分:1)

问题是stringWithContentsOfURL:是阻止呼叫。如果您要使用该方法,则应在后台线程上调用它。当您在主线程上调用它时,在完成下载字符串之前,您将无法与您的应用进行交互。

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

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

答案 1 :(得分:0)

问题是我不断地拉一个小HTML,这使得事情变得冻结和滞后。

我在它周围包装了一些条件因此它只在我真正需要它时才拉出HTML,并且一切都加速了。