文档章节

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

© 著作权归作者所有

共有 人打赏支持
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 第一个: #include static voidperform(void *info _unused){printf("hellon");} static voidtimer(CFRunLoopTimerRe......

长平狐
2012/08/13
183
0
深入理解RunLoop(一)

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

泊竹
2015/09/08
272
0
iOS定时器--NSTimer、CADisplayLink、GCD

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

WB_小文
2017/11/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学习设计模式——单例模式

1. 认识单例模式 1. 定义:一个类中仅有一个实例,并提供一个访问它的全局访问点。 2. 结构:仅一个Singleton类,其中包含一个static类变量,而类变量的类型就是Singleton类,而且Singleton...

江左煤郎
18分钟前
0
0
前端安全系列之二:如何防止CSRF攻击?

背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,又时常...

talen
19分钟前
0
0
Mysql数据库大量删除操作及谈面向对象中的封装继承和多态原理(图)

Mysql数据库大量删除操作及谈面向对象中的封装继承和多态原理(图) 最近进行数据库操作,遇到一个问题,就是大量删除一个数据表中的数据后,由于设定了id是自增的,导致再插入时,默认生成的...

原创小博客
20分钟前
0
0
Springboot + mongoDB : So easy

1. dependancy compile('org.springframework.boot:spring-boot-starter-data-mongodb') 2. config # mongodbspring.data.mongodb.host=***.mongodb.rds.aliyuncs.comspring.data.mongod......

园领T
32分钟前
1
0
centos 7( linux )下安装elasticsearch教程

目录 概述 环境准备 elaticsearch简介 安装elasticsearch 彩蛋 概述 很久没有写博客了,最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。...

java_龙
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部