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

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

最后尝试使用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方法的更多相关文章

  1. 现有新的iOS更新可用,请从iOS12 beta版进行更新.解决方案

    问题描述: ios系统一直弹出“现有新的iOS更新可用,请从iOS12 beta版进行更新”的提示,很烦的. 应该只出现在安装测试版ios12的手机上. 解决方案: 删除描述文件无法解决. 有网友机制 ...

  2. iOS分析UI利器——Reveal及简单破解方法

    Reveal作为分析APP UI的利器确实非常好用,用来查看任意UI布局也很方便 一.模拟器进行分析 1.打开Reveal(http://revealapp.com下载) 2.打开Xcode 3.Re ...

  3. ios开发UI篇—UIScrollView属性及其代理方法

    一.UIScrollView是什么? 1.UIScrollView是滚动的view,UIView本身不能滚动,子类UIScrollview拓展了滚动方面的功能. 2.UIScrollView是所有滚动 ...

  4. Android 快速切换到主线程更新UI的几种方法

    此最近看了网上,在子线程更新UI的方法,说法很多,但都不是很全面.在此我争取做到总结的全面一些,希望以后对自己,对大家都有一些帮助. 方法一: view.post(Runnable action) 假 ...

  5. 线程中更新ui方法汇总

    一.为何写作此文   你是不是经常看到很多书籍中说:不能在子线程中操作ui,不然会报错.你是不是也遇到了如下的疑惑(见下面的代码): @Override protected void onCreate ...

  6. 如何在子线程中更新UI

    一:报错情况 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that creat ...

  7. 我的Android最佳实践之—— Android更新UI的两种方法:handler与runOnUiThread()

    在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面 显示常会报错.抛出异常:android.view.ViewRoo ...

  8. Android更新UI的两种方法——handler与runOnUiThread()

    在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面 显示常会报错.抛出异常:android.view.ViewRoo ...

  9. 201709025工作日记--更新UI方法

    1.handler+Thread 和 runOnUIThread 和 handler.post 方法 区别: 从实现原理上,两者别无二致,runOnUiThread也是借助Handler实现的.  对 ...

随机推荐

  1. 利用hexo搭建博客

    利用Hexo搭建博客 以前用Octopress搭过博客,折腾了好久才弄出来,当时看到那巨难看的默认主题,繁琐的操作,一点写东西的欲望都没了. 一次逛微博,看见了Hexo.尝试了一下,真的很好用哦. 下 ...

  2. SQL并行与否的性能差异

    比较两种代码,核心代码相同,其中一个使用变量保存查询出的结果,另一个直接输出.使用同一变量时,强迫SQL放弃了并行,使用了循环.   测试结果 表'#1699586C'.扫描计数1,逻辑读取186 次 ...

  3. symfony2 路由工作原理及配置

    1.路由是程序的方法和URL的一一映射.

  4. Git从零开始怎么学?

    最近,公司项目代码版本库管理,全部从svn 迁移到Git 最近了解了一段时间 近期会把整个Git使用过程陆续分享 如何从零开始使用Git

  5. sqlalchemy多表联合查询(join)

    使用outerjoin instances = db.session.query(Instance.name, Instance.sep_status, User.email).outerjoin( ...

  6. HTML基础(二)——表单,图片热点,网页划区和拼接

    一.表单 <form id="" name="" method="post/get" action="负责处理的服务端&qu ...

  7. request对象详解

    先来了解一下Request的主要方法: setAttribute(String name,Object):设置名字为name的request的参数值getAttribute(String name): ...

  8. 大型网站的 HTTPS 实践(1):HTTPS 协议和原理

    转自:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重 ...

  9. C# 读取在存储过程多结果集

    --SQL Server 测试环境搭建: Create database Test; go USE [Test] GO if OBJECT_ID('Tab','U') is not null drop ...

  10. sql server ,sql语句,练习笔记

    一.删除冗余记录 DELETE [学生表] WHERE id NOT IN (SELECT MIN(id) FROM [学生表] GROUP BY [学号],[姓名],[课程编号],[课程],[分数] ...