docs: SSL/TLS

This commit is contained in:
LiuBinPeng
2022-05-24 13:00:23 +08:00
parent 7241220c8e
commit 4f11b95363
90 changed files with 4054 additions and 451 deletions

View File

@@ -33,7 +33,7 @@
![](/Users/lbp/Desktop/GitHub/knowledge-kit/assets/RunLoop-SourceCode.png)
![](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/assets/RunLoop-SourceCode.png)
## RunLoop API
@@ -138,16 +138,20 @@ RunLoop 在各个 Mode 下做事情,其实就是在处理某个 Mode 中的 So
Source0:
- 屏幕触摸事件处理
- 屏幕触摸事件处理(非基于 Port 的事件对应需要手动触发的事件对应官方文档Input Source 中的 Custom 和 `performSelector:onThread` 事件源。
- `performSelector:onThread:`
- 数组
Source1:
- 基于 Port 的线程间通信
- 基于 Port 的线程间通信,可以主动唤醒 RunLoop
- 系统事件捕捉比如屏幕触摸事件Source1捕捉后派发给 Source0 处理)
- 字典。`{machport : 1}`
Timers
- NSTimer
@@ -388,7 +392,7 @@ CFRelease(obersver);
但是如何直到系统是运行 RunLoop 的哪个函数?给 viewDidLoad 设置断点,在 lldb 模式输入 `bt` 查看堆栈
![](/Users/lbp/Desktop/GitHub/knowledge-kit/assets/RunLoop-Specific.png)
![](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/assets/RunLoop-Specific.png)
查看 CF 中 `CFRunLoop.c`源码。方法比较复杂,做了精简摘要
@@ -1497,7 +1501,7 @@ UITableView 在滚动的时候一个优化点之一就是 UIImageView 的显示
2. `[[NSRunLoop currentRunLoop] run]` api 换掉。查看系统说明,底层其实就是一个无限循环,循环内部不断调用 `runMode:beforeDate:`。下面也有建议,建议我们想销毁 RunLoop可以替换 API比如设置一个变量标记是否需要结束 RunLoop
![](/Users/lbp/Desktop/GitHub/knowledge-kit/assets/RunLoop-RunIssue.png)
![](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/assets/RunLoop-RunIssue.png)
改进代码如下
@@ -1578,6 +1582,17 @@ UITableView 在滚动的时候一个优化点之一就是 UIImageView 的显示
}
```
线程保活后如何暂停?
```
[thread cancel];
thread = nil;
// 指针 nil还是被 RunLoop 持有。
// 也不行。CFRunLoopStop([NSRunLoop currentRunLoop].getCFRunLoop);
```
主线程为什么
### 线程封装
思考:如何设计一个常驻线程工具类?