文档章节

runLoop介绍

AppleDream
 AppleDream
发布于 2016/07/27 11:53
字数 350
阅读 26
收藏 0

runLoop

#####1.1.runLoop

  • 每条线程都有唯一的一个与之对应的RunLoop对象
  • 主线程的RunLoop已经自动创建好了,子线程的RunLoop需要主动创建
  • RunLoop在第一次获取时创建,在线程结束时销毁
  • runLoop在main函数中调用UIApplicationMain开启

#####1.2.图片

#####2.1.NSTimer与Mode

#pragma  mark - timer
-(void) timer{
    //    [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(run) userInfo:nil repeats:YES];
    NSTimer *timer=[NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(run) userInfo:nil repeats:YES];
    //NSDefaultRunLoopMode(App的默认Mode,通常主线程是在这个Mode下运行)
    //NSRunLoopCommonModes(App的默认Mode,通常主线程是在这个Mode下运行)
    //UITrackingRunLoopMode(在刚启动 App 时第进入的第一个 Mode,启动完成后就不再使用)
    //MODE还有其它的模式,(两种)不用程序员自己设置,上面三种:NSRunLoop每一次只能在一种模式下执行,模式会切换
//    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
//    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];
}

#####3.1.observe

-(void) observe{
    //KVO
    //    [NSRunLoop currentRunLoop] addObserver:<#(nonnull NSObject *)#> forKeyPath:<#(nonnull NSString *)#> options:<#(NSKeyValueObservingOptions)#> context:<#(nullable void *)#>
    //创建observer
    CFRunLoopObserverRef observer=CFRunLoopObserverCreateWithHandler(kCFAllocatorDefault, kCFRunLoopAllActivities, YES, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
        NSLog(@"activity-- %zd",activity);
    });
    //添加观察者:监听RunLoop的状态
    CFRunLoopAddObserver(CFRunLoopGetCurrent(), observer, kCFRunLoopDefaultMode);
    //释放Observer
    CFRelease(observer);

    //CF的内存管理(Core Foundation)
    //1.凡是带有Create、Copy、Retain等字眼的函数,创建出来的对象,都需要在最后做一次release
    // 比如CFRunLoopObserverCreate
    //2.release函数:CFRelease(对象);
}

#####4.github

© 著作权归作者所有

共有 人打赏支持
上一篇: GCD定时器
下一篇: coco
AppleDream
粉丝 9
博文 92
码字总数 26198
作品 0
昆山
程序员
私信 提问
NSRunloop的解析及autorelease的释放时机

iOS的运行时是由一个一个runloop组成的,每个runloop都会执行下图所示的一些步骤: 每个runloop中都创建一个Autorelease Pool,并在runloop的末尾进行释放, 所以,一般情况下,每个接受aut...

刀客445
2016/05/19
51
0
iOS 面试全方位剖析 -- RunLoop 篇

程序都是从 main 函数开始启动的,随着 main 函数里执行体结束之后 main 函数也会结束,程序也会退出。但是为什么程序可以保持一个活跃的状态呢? 在 main 函数的 UIApplicationMain 内部会启...

PetitBread
06/11
0
0
iOS运行回路(RunLoop)总结

首先看两个runloop的示例,来源:http://paste.lisp.org/display/86524 第一个: 第二个: 功能是向main线程中加入两个input source,一个是timer,一个是自定义input source,然后这个timer...

长平狐
2012/08/13
185
0
iOS定时器--NSTimer、CADisplayLink、GCD

前言 在最近的项目开发过程中,遇到了需要运用定时器的需求,在以前的项目中,也没用过定时器。最近做的一个项目很有几个地方用到了定时器,短信验证码倒计时、倒计时取消订单,定时网络请求...

WB_小文
2017/11/20
0
0
深入理解RunLoop(一)

RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释...

泊竹
2015/09/08
272
0

没有更多内容

加载失败,请刷新页面

加载更多

spring学习笔记(二)spring 事件的使用

spring 中的事件 spring事件通过订阅发布 可以解耦操作 可以同步 可以异步 步骤 编写事件 通过继承org.springframework.context.ApplicationEvent 来编写事件 public ApplicationEvent(Obj...

NotFound403
16分钟前
1
0
特斯拉车主成功破解了自己Model 3汽车

据汽车博客Electrek消息,一位特斯拉车主成功破解了自己Model 3汽车,还在此基础上运行了Ubuntu。 这位叫trsohmers的网友表示,“功劳大多要归到Ingineerix的头上,他花了数月才找到初始的那...

linuxCool
30分钟前
1
0
Gitbook : random errors when using gitbook plugin on running "gitbook serve"

在执行gitbook serve时,会有不定的失败错误 参考问题 :#1309 解决方案: 更新gitbook版本,这个问题似乎是3版本的问题 , 官方也不打算在这个版本解决了。 更新 到最新版本后, 不再出现问...

ol_O_O_lo
44分钟前
1
0
提灯照暗,向内自省——《中国文化的深层结构》读书笔记3800字

提灯照暗,向内自省——《中国文化的深层结构》读书笔记3800字: 作者:王健茜;断断续续一个多月才读完了《中国文化的深层结构》,这并不是一本难懂的书,之所以读得慢,源于对书中观点的思...

原创小博客
47分钟前
1
0
高德地图-行政区域接口

1、获取全国各省信息 https://restapi.amap.com/v3/config/district?extensions=all&key=应用Key&s=rsv3&output=json 2、获取下级行政区域信息 https://restapi.amap.com/v3/config/distric......

voole
58分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部