UIProgressView在后台线程中更新

时间:2017-06-13 10:35:19

标签: objective-c iphone multithreading user-interface uiview

我必须在 MainThread 上调用函数计算某些东西。当计算过程运行时,我可以调用UIProgressView来更新UI。

当我刚刚调用更新功能时,它正在工作但最后更新用户界面

我使用performSelectorInBackground调用更新功能,正常工作

为什么使用performSelectorInBackground可以使用

click here to show GIF

我见过这个What's happen if control UI by performSelectorInBackground?,但它没有解释为什么performSelectorInBackground正在工作。

示例代码
https://github.com/g78101/progressViewTest

1 个答案:

答案 0 :(得分:0)

我找到了一些灵​​魂

From the doc
[myObj performSelectorInBackground:@selector(doSomething)withObject:nil];
调用此方法的效果与使用当前对象,选择器和参数对象作为参数调用 NSThread detachNewThreadSelector:toTarget:withObject:方法相同。

BackgroundThread只是更改UI值,更新UI在mainThread上运行。

只需NSThrad即可

我认为原因是NSThrad的框架比GCD简单