一、子线程的消息循环

1.下面我们来看:子线程的消息循环
一句话:主线程的消息循环默认开启,子线程的消息循环默认不开启,
那既然不开启,我们想要用,就要自己来,开启,
那怎么来开启呢,我们下面有一句话,[NSRunLoop currentRunLoop],获取当前的消息循环,调用run方法,run就是,开始执行,
[[NSRunLoop currentRunLoop] run];
注意:跟据你刚刚学过的,这里边有一个问题,什么问题呢,刚才我们说过,消息循环,是不是运行在一种模式上,这个模式指定了没有,没有,没有的话,它也是有模式的,什么模式,NSDefaultRunLoopMode,默认模式,
下面,我们来演示一下,子线程的消息循环,怎么来开启,
我们来新建一个项目:

Name:02-子线程消息循环

我们要开启子线程的消息循环,首先,我得创建一个子线程,我们要复习一下,之前怎么开启线程的,

// 开启一个子线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(demo) object:nil];
[thread start];
// 执行在子线程上的方法
- (void)demo{
NSLog(@“I’m running.”);
}
这个没有什么问题,下面,我们要来演示一个新的内容,我们要往子线程的消息循环中,添加一个输入源、我们也可以用定时源、我们的定时器、也可以执行在子线程的消息循环上,
我们还可以设置另一种源啊,我们之前见过的,
// 往子线程的消息循环中添加输入源

怎么添加,刚刚我们在那张图上见过,见过一个performSelector,performSelector,也可以设置消息循环的输入源,调用performSelector,

注意:我们想让这个selector,执行在子线程上,我们应该找一个selector,因为这里边有好多好多performSelector,看第一个,这儿有一个什么,onThread吧,
performSelector:(SEL) onThread:(NSThread *) withObject:(id) waitUntilDone:(BOOL)

performSelector:onThread:是不是在一个指定的线程上来执行,下面,有两个方法,这两个方法有什么区别呢,

1)performSelector:(SEL) onThread:(NSThread *) withObject:(id) waitUntilDone:(BOOL)
我们来先看第一种方法啊,传入方法,指定线程,传入参数,waitUntilDone:(BOOL)这个是什么,是否等着这个方法执行完,再执行后续的操作,这是一种方式,
我们要指定一个输入源,少点儿东西呢,我们想让这个方法执行在消息循环中,我们要设置一个输入源,要设置输入源的话,必须要设置什么,模式,消息循环的模式,这个方法,没有设置模式,没有是什么模式,NSDefaultRunLoopMode,默认模式吧,
看一下右边的帮助:


1537

被折叠的 条评论
为什么被折叠?



