Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Objective c UIProgressView在后台线程中更新_Objective C_Iphone_Multithreading_User Interface_Uiview - Fatal编程技术网

Objective c UIProgressView在后台线程中更新

Objective c UIProgressView在后台线程中更新,objective-c,iphone,multithreading,user-interface,uiview,Objective C,Iphone,Multithreading,User Interface,Uiview,我必须在主线程上调用函数计算一些东西。当计算过程运行时,我可以调用UIProgressView来更新UI。 当我刚刚调用update函数时,它正在工作,但最后更新了UI 我使用performSelectorInBackground调用update函数,它的工作正常 为什么使用性能选择背景可以工作 我已经看到了这一点,但它并没有解释为什么performSelectorInBackground起作用 示例代码 我找到了一些解决办法 : [myObj performSelectorInBackgro

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

当我刚刚调用update函数时,它正在工作,但最后更新了UI

我使用
performSelectorInBackground
调用update函数,它的工作正常

为什么使用
性能选择背景
可以工作

我已经看到了这一点,但它并没有解释为什么
performSelectorInBackground
起作用

示例代码
我找到了一些解决办法


[myObj performSelectorInBackground:@selector(doSomething)with object:nil]
调用此方法的效果与调用NSThreaddetachNewThreadSelector:toTarget:withObject:方法(使用当前对象、选择器和参数对象作为参数)相同

BackgroundThread只是更改UI值,更新UI正在主线程上运行

只有NSThrad可以工作

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