RunLoop学习总结】的更多相关文章

开始 很久之前就看了一次YY的文章,没看懂.后来又看了sunny的视频和叶孤城的直播的视频,找了很多资料,对RunLoop也越来越清晰,然后又看了两三次YY的文章,虽然还没完全看懂,不得不说写的非常好,帮助很大.还有官方文档,学到了很多东西.还有就是github上的一些demo,文中一些代码别人写过了,我就直接拿过来了.文中一些结论也是取自大神的文章或者视频.非常感谢这些前辈大神们的分享吧!! 什么是RunLoop RunLoop其实就是一种处理事件.消息的机制被面向对象化,它就是一个对象.其实…
Run Loops Run loops是线程的一个基本构成部分.一个run loop 是一个事件处理循环,你可以使用它来处理线程收到的事件.设计run loop的目的就是可以使得线程在收到事件的时候处理事件而为收到事件的时候进入sleep状态(个人理解,线程如果启用了run loop那么这个线程就变成了一个内部的服务线程,不会主动死掉) 对于Run loop 的管理并不是全部系统自动完成的.你必须自己完成线程中run loop的启动并编写逻辑代码去处理收到的时间.在Cocoa和 Core Fou…
前言:公司项目终于忙的差不多了,最近比较闲,想起叶大说过的iOS面试三把刀,GCD.runtime.runloop,runtime之前已经总结过了,GCD在另一篇博客里也做了一些小总结,今天准备把runloop搞一下,之前看了很多资料,也按照对应的在项目中的应用点写了几个demo,其中两个demo非原创,直接拿过来借花献佛了.今天才有时间把它们总结一下,并记录下来.关于runloop的基础知识我就不多介绍了,网上一堆介绍的文章,这里只说实际项目中的使用点,毕竟东西是拿来用的. 1.关于轮播图 第…
一:CFRunLoopModeRef 1. CFRunLoopModeRef带表RunLoop的运行模式 2. 一个Runloop可以有若干个mode,每个mode又包含若干个sourse,timer,observer 3. 每当RunLoop启动时,只能指定其中一个mode,这个Mode被称为CurrentMode [[NSRunLoop currentRunLoop].currentMode 如果需要切换Mode,只能退出Runloop,再重新指定一个Mode来运行.这样做的目的就是为了分割…
一:Runloop基本知识 1.本质就是运行循环 2.基本作用: 2.1保证程序持续运行 2.2处理APP中的各种事件:触摸,定时器,selector... 2.3节省CPU资源,系统程序性能:它会让主线程在工作时工作,非工作时休息. 2.4.... 二:main函数中的Runloop 1. int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStri…
以下为主RunLoop 的输出,能够看到不同的source0,source1,observer ---------------------------------- CFRunLoop{wakeup port =, stopped = false, ignoreWakeUps = false, current mode = kCFRunLoopDefaultMode,common modes { <CFString 0x108f42000 [0x107bd39b0]>{contents = &…
今天突然才之间才意识到NSTimer这样的运行方式,是在多线程中实现的循环还是在主线程中去实现的呢.当然不可能是在主线程中的while那么简单,那样什么都干不了,简单看了下NSTimer是以同步方式运行的.时间到了,消息发出后,ontimer的函数是在主线程上调用的. 我们会经常看到这样的代码: - (IBAction)start:(id)sender { pageStillLoading = YES; [NSThread detachNewThreadSelector:@selector(lo…
一:RunLoop的简单介绍 #import "ViewController.h" @interface ViewController () @end @implementation ViewController /** * 1:Runloop和线程的关系:1:一一对应,主线程的runloop已经默认创建,但是子线程的需要手动创建:创建子线程的runloop: NSRunLoop *run = [NSRunLoop currentRunLoop];currentRunLoop懒加载的,…
一:RunLoop的应用 #import "ViewController.h" @interface ViewController () /** 注释 */ @property (nonatomic, strong) NSThread *thread; @end @implementation ViewController /** * 1:用NSThread创建线程的时候,不要忘记调用start方法来开启线程,在一条线程中的任务执行的顺序是同步的,串行执行,并且当线程中的任务执行完毕后…
一:RunLoop相关类: 其中:source0指的是非基于端口por,说白了也就是处理触摸事件,selector事件,source1指的是基于端口的port:是处理系统的一些事件 注意:创建一个RunLoop之后,有默认的运行模式mode,也可以为RunLoop指定运行模式,RunLoop启动必须得有运行模式,而且在运行模式中必须还有timer或是source事件其中之一,否则RunLoop就会退出.启动RunLoop必须调用start方法 二:RunLoop运行处理逻辑 RunLoop通知观…