IOS RunLoop浅析 一
来源:互联网 发布:人工智能微信公众号 编辑:程序博客网 时间:2024/05/16 14:03
IOS RunLoop浅析 一
RunLoop犹如其名循环。
RunLoop 中有多重模式。
在一个“时刻”只能值执行一种模式。
因此在使用RunLoop时要注意所实现的效果有可能不是你想要的。
在这里用NSTimer展示一下Runloop的简单实现。
在故事板中添加一个TextView(用于测试)
我们吧nstimer加入到NSDefaultRunLoopMode模式中
在上面我们可以很清晰的看到,当我们滚动TextView的时候,nstimer不在执行。
//// ViewController.m// CX RunLoop浅析//// Created by ma c on 16/3/29.// Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSTimer * timer = [NSTimer timerWithTimeInterval:3 target:self selector:@selector(test) userInfo:nil repeats:YES]; //添加到默认的runloop中 [[NSRunLoop mainRunLoop]addTimer:timer forMode:NSDefaultRunLoopMode]; [timer fire];} -(void)test{ NSLog(@"旭宝爱吃鱼"); }@end
我们吧nstimer加入到UITrackingRunLoopMode模式中
在上面我们可以很清晰的看到,当我们滚动TextView的时候,nstimer执行。
//// ViewController.m// CX RunLoop浅析//// Created by ma c on 16/3/29.// Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSTimer * timer = [NSTimer timerWithTimeInterval:3 target:self selector:@selector(test) userInfo:nil repeats:YES]; //添加到默认的runloop中 [[NSRunLoop currentRunLoop]addTimer:timer forMode:UITrackingRunLoopMode]; [timer fire];} -(void)test{ NSLog(@"旭宝爱吃鱼"); }@end
我们吧nstimer加入到NSRunLoopCommonModes模式中
在上面我们可以很清晰的看到,当我们滚动与不滚动TextView的时候,nstimer都执行。
//// ViewController.m// CX RunLoop浅析//// Created by ma c on 16/3/29.// Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSTimer * timer = [NSTimer timerWithTimeInterval:3 target:self selector:@selector(test) userInfo:nil repeats:YES]; //添加到默认的runloop中 [[NSRunLoop currentRunLoop]addTimer:timer forMode:NSRunLoopCommonModes]; [timer fire];} -(void)test{ NSLog(@"旭宝爱吃鱼"); }@end
NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(test) userInfo:nil repeats:YES];
自动添加到runloop 并且默认为NSDefaultRunLoopMode.
但是我们可以通过与上面相同的方法改变模式。
//// ViewController.m// CX RunLoop浅析//// Created by ma c on 16/3/29.// Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(test) userInfo:nil repeats:YES];} -(void)test{ NSLog(@"旭宝爱吃鱼"); }@end
0 0
- IOS RunLoop浅析 一
- IOS RunLoop浅析 一
- IOS RunLoop浅析 一
- IOS RunLoop浅析 二
- IOS RunLoop浅析 三
- IOS RunLoop浅析 二
- IOS RunLoop浅析 三
- IOS RunLoop浅析 三
- IOS RunLoop浅析 二
- [iOS RunLoop初识](一)
- IOS 多线程 RUNLOOP 机制 (一)
- IOS 多线程 RUNLOOP 机制 (一)
- IOS 多线程 RUNLOOP 机制 (一)
- IOS 多线程 RUNLOOP 机制 (一)
- IOS 多线程 RUNLOOP 机制 (一)
- IOS 多线程 RUNLOOP 机制 (一)
- 浅析 RunLoop
- runloop浅析
- 0035C++中vector类的常用函数
- 一个Demo搞定Gson解析+Volley框架+Universal框架+通用适配器
- Charles使用介绍--MAC上优秀的抓包工具
- 1107: 单向公路(bfs+输入整理)(DFS也可以,而且更快)
- webService-cxf方式生成客户端
- IOS RunLoop浅析 一
- VMware Workstation下安装vmware tools
- 如何让按钮UIButton的文字左对齐?
- Android M Zen mode(勿扰)分析
- SharedPreference工具类
- VS集成Qt环境搭建
- Eclipse 自动提示设置
- Android Market 链接的生成与分享
- 扣丁学堂笔记第22天多媒体播放