文档章节

iOS开发技巧(系列十一:performSelectorOnMainThread的一些细节)

召唤攻城狮
 召唤攻城狮
发布于 2014/05/10 17:33
字数 465
阅读 565
收藏 0

在iOS编码过程中,我经常使用[self performSelectorOnMainThread:withObject:waitUntilDone]方法,这一般是在后台线程结束之后,回到主线程刷新界面,比如说你的代码可能会这样写,

[self performSelectorOnMainThread:@selector(refreshTableView) withObject:nil waitUntilDone:YES];

- (void)refreshTableView

{

    [self.tableView reloadData];

}

这样的意思就是在主线程中刷新tableView,这种写法是一个比较好的方式,但是我们有时候会有失误的时候,什么情况呢?我来说说自己的失误吧,我的代码这样写,[self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];然后就悲剧了,这样的写法肯定会导致程序挂掉,后来我发现了错误的原因,我只是习惯性的把此reloadData当做了tableView的reloadData,所以产生了错误。我们可以这样改正,

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];(第二种写法)

这样就明确的指定了在主线程中执行self.tableView的reloadData方法了。但是我还是推荐第一种写法,即

[self performSelectorOnMainThread:@selector(refreshTableView) withObject:nil waitUntilDone:YES];

- (void)refreshTableView

{

    [self.tableView reloadData];

}

因为这样你写的代码行数多啊,说明你的工作量大啊。哈哈开玩笑的,这种写法我觉得更加直观一点吧。

任何一个NSOjbect子类都可以调用-performSelectorOnMainThread:withObject:waitUntilDone方法,比如数组对象array,可以这样调用该方法,

//下面的代码正确性我不能保证,小伙伴们可以试试看

[array performSelectorOnMainThread:@selector(removeAllObjects) withObject:nil waitUntilDone:YES];

只是没有必要,所以很少见到罢了。

我建了一个iOS交流群188647173,欢迎各位前来交流学习,分享码农经验。最近群的人数一直上不去,我甚是捉急,读者朋友们顶起啊。

© 著作权归作者所有

共有 人打赏支持
召唤攻城狮
粉丝 184
博文 53
码字总数 49671
作品 0
玉林
一步一步学习 iOS 6 编程(第四版)正式发布

所有范例程序及其截图都采用Xcode 4.4 和Xcode 4.5 最新版开发工具,本书包含了最新的iOS 6 开发技术,如自动布局(Auto Layout)、集合视图(Collection View)等等。 新增内容包括:分割视...

entlib
2012/10/25
0
2
iOS股票K线图、校园助手、适配iPhone X、版本检测等源码

iOS精选源码 快速创建menuItem控件 YHPhotoBrowser 优化的网络图片浏览 cocoaAsynSocket demo (包含客户端和服务端) SwipeMenuViewController现在支持iPhoneX和Swift4。 仿微信的提醒对话框 ...

sunnyaigd
2017/10/31
0
0
iOS 11开发教程(十一)了解iOS11应用视图

iOS 11开发教程(十一)了解iOS11应用视图 在iPhone或者iPad中,用户看到的和摸到的都是视图。视图是用户界面的重要组成元素。本节将主要讲解视图的添加、删除以及位置和大小的设置等内容。 ...

大学霸
2017/11/01
0
0
IOS学习,最简单的表格应用程序,学习,列出博客

IOS编程浅蓝教程,这是博客地址http://www.cnblogs.com/haichao/category/425378.html IOS编程浅蓝教程:锲子 IOS编程浅蓝教程(一)先决条件:开始iOS编程的必要准备 IOS编程浅蓝教程(二) Hel...

andy521zhu
2015/01/17
0
0
【IOS视频教学】三个月学会IOS开发

一、windows系统下安装虚拟机-mac系统-视频教程-安装件全套下载:http://www.wyzc.com/forum/56212.html 二、史上最佳0基础Swift语言视频教程下载链接:http://www.wyzc.com/forum/56744.htm...

马洪伟
2014/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

LSM-Tree 大数据索引技术

一、LSM-Tree概述 核心思想就是放弃部分读能力,换取写入能力的最大化。LSM-Tree ,这个概念就是结构化合并树(Log-Structured Merge Tree)的意思,它的核心思路其实非常简单,就是假定内存...

PeakFang-BOK
32分钟前
1
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

peakedness丶
38分钟前
1
0
Weblogic补丁升级操作步骤

linux平台: weblogic1036 1:停止weblogic服务 2:打FMJJ补丁 a:获取weblogic_home目录并执行命令:export weblogic_home="/weblogic/wls1036_x64",(此目录一般为目录“user_projects”上...

fang_faye
51分钟前
1
0
04-《Apache Tomcat 9 User Guide》之部署项目

1.Introduction Deployment is the term used for the process of installing a web application (either a 3rd party WAR or your own custom web application) into the Tomcat server. 部......

飞鱼说编程
51分钟前
1
0
一位十年的老码农他眼中的区块链

大家可能已经听说过比特币、莱特币、以太币等等,以及它们作为一种新货币在市场上的潜力。 有趣的是,很多投资比特币的人也提到了区块链之类的东西。 显然,这项技术是比特币等其他东西的"基...

小刀爱编程
59分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部