初识RunLoop

2016-12-12  本文已影响9人  哔哩哔哩智能喵
- #####2. NSRunLoop和CFRunLoopRef都代表着RunLoop对象,它们是等价的,可以互相转换
- #####3. NSRunLoop是基于CFRunLoopRef的一层OC包装,所以要了解RunLoop内部结构,需要多研究CFRunLoopRef层面的API(Core Foundation层面)
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //获得主线程对应的runloop
    NSRunLoop *mainRunLoop = [NSRunLoop mainRunLoop];
    //获取当前线程对应的runloop
    NSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop];
    
    NSLog(@"%p---%p",mainRunLoop,currentRunLoop);
    /**
     Runloop和线程的关系
     一一对应的关系,主线程runloop已经创建,但是子线程的需要手动创建
     */
   NSThread *thread =  [[NSThread alloc]initWithTarget:self selector:@selector(runLoop) object:nil];
    [thread start];
}
-(void)runLoop
{   //创建子线程对应的runloop,currentRunLoop是懒加载的
    NSLog(@"%@",[NSRunLoop currentRunLoop]);
    NSLog(@"run---%@",[NSThread currentThread]);
}

上一篇 下一篇

猜你喜欢

热点阅读