博客> Runloop - 运行循环
Runloop - 运行循环
2019-08-17 02:47 评论:0 阅读:849 SL勿忘
ios Runloop

作用

通过 RunLoop 机制实现省电,流畅,响应速度快,用户体验好 事件循环伪代码

function loop() { initialize(); do { var message = get_next_message(); process_message(message); } while (message != quit); }

特性:

IOS 中所有的事件监听全部由运行循环负责 主线程的 RunLoop 在应用启动的时候就会自动创建 其他线程则需要在该线程下自己启动 不能自己创建 RunLoop RunLoop 并不是线程安全的, 所以需要避免在其他线程上调用当前线程的 RunLoop RunLoop 负责管理 autorelease pools RunLoop 负责处理消息事件, 即输入源事件、计时器事件和网络请求事情

应用场景

创建常驻线程,执行一些会一直存在的任务。改线程的声明周期跟 App 相同

@autoreleasepool { NSLog(@"%@", [NSThread currentThread]);

NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
// 只有添加端口后,才能能够保证运行循环持续运行
[runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[runLoop run];

// 线程结束之前,不会执行至此
NSLog(@"%@", [NSThread currentThread]);

}

维护线程的声明周期,让线程不自动退出, isFinished 为 YES 时退出 在一定时间内监听某种事件,或执行某种任务的线程

收藏
0
sina weixin mail 回到顶部