ios更新UI时请尝试使用performSelectorOnMainThread方法

Posted Kingly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios更新UI时请尝试使用performSelectorOnMainThread方法相关的知识,希望对你有一定的参考价值。

最近开发项目时发现联网获取到数据后,使用通知方式让列表刷新会存在死机的问题。

经过上网查找很多文章,都建议使用异步更新的方式,可是依然崩溃。

最后尝试使用performSelectorOnMainThread方法可以成功更新tableView。

下面就学习一下这个函数吧!

NSObject类的performSelectorOnMainThread和performSelectorInBackground可以实现简单的多线程编程技术

1、- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

创建一个线程在子线程执行,aSelector代表了新创建的线程,arg是传入的参数

2、- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

该方法的作用是在主线程中,执行制定的方法(代码块)。

参数:

@selector就是,要定义我们要执行的方法。

withObject:arg定义了,我们执行方法时,传入的参数对象。类型是id。(我们可以传入任何参数)

waitUntilDone:YES指定,当前线程是否要被阻塞,直到主线程将我们制定的代码块执行完。

注意:

1.当前线程为主线程的时候,waitUntilDone:YES参数无效。

2.该方法,没有返回值

3.该方法主要用来用主线程来修改页面UI的状态。

以上是关于ios更新UI时请尝试使用performSelectorOnMainThread方法的主要内容,如果未能解决你的问题,请参考以下文章

材质 UI 样式未渲染

如何更新 UI 并询问 Healthkit 的权限

如何更新 UI 并询问 Healthkit 的权限

为啥loop之后就可以子线程更新ui

未调用 IBAction,但 UI 正在更新?

尝试更新 ViewModel 中的 Ui 属性时 DispatcherQueue null