performSelectorInBackground调用方法减慢主线程 - 可以修复吗?

时间:2014-08-07 16:40:15

标签: ios objective-c multithreading rest

客户在开始使用应用之前为其网站编写了一个REST API。它是一个不错的API,但它旨在与在同一网络上运行的服务进行交互。客户端没有考虑到蜂窝数据上的交互比同一网络甚至同一物理计算机上的交互花费指数更长的时间这一事实。由于客户端在服务器设计期间没有考虑到这一点,我现在留下了一个API,要求我每次用户更改1个选项时来回传输整个对象。起初,它使我的主线程减慢了一个荒谬的数量。因此,我尝试通过调用

将API交互放在后台线程上来解决问题
[self performSelectorInBackground:]

这有很大帮助。但是,图形仍然有点不稳定。只要发生这种情况,数据传输和返回的速度就不会过于重要。我想知道是否有降低后台线程优先级的方法,以便主线程上的图形根本不受影响,或者至少很少受到影响。这可能吗?

1 个答案:

答案 0 :(得分:3)

默认情况下,在后台线程上运行方法会降低主线程以下的优先级,因此不应该减慢主(UI)线程的速度。我猜想还有别的事情发生了。我冒昧地说你在主线程上做了一些你不知道的事情,这会减慢你的“图形”。要检查,请尝试删除服务器调用,因为几乎没有办法在后台线程上下载/解析数据会使事情变慢,导致主线程挂起并导致动画断断续续。另一种可能性是你的动画没有高效完成,而且本身就是不稳定的。

尽管如此,你需要更具体地了解图形不稳定以获得更好的答案。