IOS RunLoop浅析 三
来源:互联网 发布:诺基亚6220c软件 编辑:程序博客网 时间:2024/05/16 19:47
IOS RunLoop浅析 三
经过两篇的介绍我想对RunLoop应该有了简单的了解,至少不至于一无所知。
在这篇我想对“CFRunLoopObserverRef”做一下简单的补充。
在补充之前先说一下。
在现在的开发中已经很少见到ARC了。
但是那是对与OC对象的。
CFRunLoopObserverRef属于CF (Core Foundation)
所以我们需要手动释放。
规则如下:
凡是带有creat copy retain 等成分的函数创建出来的对象都要要在最后进行释放,即Release。
//// 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{ //添加observe /* 所监听的状态 kCFRunLoopEntry = (1UL << 0), kCFRunLoopBeforeTimers = (1UL << 1), kCFRunLoopBeforeSources = (1UL << 2), kCFRunLoopBeforeWaiting = (1UL << 5), kCFRunLoopAfterWaiting = (1UL << 6), kCFRunLoopExit = (1UL << 7), kCFRunLoopAllActivities = 0x0FFFFFFFU */ CFRunLoopObserverRef observe = CFRunLoopObserverCreateWithHandler(CFAllocatorGetDefault(), kCFRunLoopAllActivities, YES, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) { NSLog(@"监听到runloop-- %zd",activity); }); //添加观察者 CFRunLoopAddObserver(CFRunLoopGetCurrent(), observe, kCFRunLoopDefaultMode); //CF 内存管理 (Core Foundation) /* 凡是带有creat copy retain 等成分的函数创建出来的对象都要要在最后进行释放,即Release。 */ CFRelease(observe);}@end
上面是对CFRunLoopObserverRef的简单补充。
下面在这里简单介绍一下RunLoop的处理逻辑。
Runloop处理逻辑:
1,通知Observer,即将进入loop
2,通知Observer,将要处理timer
3,通知Observer,将要处理Source0
4,处理Source0
5,如果有Source1,跳到第9步
6,通知Obesrcer,线程即将休眠
7,休眠,等待唤醒
8,通知Observer,线程刚被唤醒
9,处理唤醒时收到的消息,之后跳回2
10,通知Oberver,即将退出Loop
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 机制 (三)
- 浅析 RunLoop
- runloop浅析
- RunLoop浅析
- iOS runloop
- Java HotSpot VM Options
- openjudge SDAU 约瑟夫环问题
- HDU 4148Length of S(n)(兴爷版)
- Android动态加载—so文件
- 谈谈iOS 的加密技术
- IOS RunLoop浅析 三
- 标识符
- TCP连接状态详解及TIME_WAIT过多的解决方法
- SQLite
- 对文件编码做转换的时候注意事项
- Linux Shell初探01
- SQL自定义函数--计算两个坐标点间距离
- Java编程数字的格式化
- 现代控制理论思考题----倒立摆小车控制算法研究