博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSThread 的创建和使用
阅读量:6171 次
发布时间:2019-06-21

本文共 1000 字,大约阅读时间需要 3 分钟。

线程 创建与启动  

NSThread的创建主要有两种直接方式: 
[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil]; 
和 
NSThread* myThread = [[NSThread alloc] initWithTarget:self 
                                        selector:@selector(myThreadMainMethod:) 
                                        object:nil]; 
[myThread start]; 
 
这两种方式的区别是:前一种一调用就会立即创建一个 线程 来做事情;而后一种虽然你 alloc 了也 init了,但是要直到我们手动调用 start 启动线程 时才会真正去创建线程 。 
这种延迟实现思想在很多跟资源相关的地方都有用到。后一种方式我们还可以在启动线程 之前,对线程 进行配置,比如设置 stack 大小,线程 优先级。 
 
还有一种间接的方式,更加方便,我们甚至不需要显式编写 NSThread 相关代码。那就是利用 NSObject 的类方法 performSelectorInBackground:withObject: 来创建一个 线程 : 
[myObj performSelectorInBackground:@selector(myThreadMainMethod) withObject:nil]; 
其效果与 NSThread 的 detachNewThreadSelector:toTarget:withObject: 是一样的。 

******************************

如在我们在某个 线程 中下载数据,下载完成之后要通知主线程 中更新界面等等,可以使用如下接口:- (void)myThreadMainMethod 

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    // to do something in your thread job 
    ... 
    [self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO]; 
    [pool release]; 
}  

 

 

 

 

 

转载地址:http://jovba.baihongyu.com/

你可能感兴趣的文章
mongodb的学习-3-在Mac上的安装配置
查看>>
学习函数调用的约定方式
查看>>
ACM题解系列之二:刘汝佳:《算法竞赛入门经典训练指南》
查看>>
HDU1262 寻找素数对
查看>>
HDU2009 求数列的和
查看>>
log4cplus使用(二)-自定义日志等级
查看>>
Android中使用webservice验证用户登录的示例
查看>>
log4j.properties配置说明学习网址
查看>>
堆排序
查看>>
[Codeforces Round #284 (Div. 1) B]Name That Tune(概率Dp)
查看>>
每天一个linux命令(2):cd命令
查看>>
Debian/Ubuntu下GPT分区转MBR分区
查看>>
[教程]图文:python安装+psutil模块安装
查看>>
写出这个数 (20)
查看>>
10个常用方法有效优化ASP.NET的性能
查看>>
Sublime Text 3常用插件—Emmet
查看>>
Css远程字体 font-face
查看>>
plsql基础教程(自学用)
查看>>
LOJ#2720 你的名字
查看>>
TexturePacker 如何使用自带的加密功能及在cocos2dx中的使用
查看>>