Posts

多线程问题的补充

多线程问题的补充 1. GCD 1.1 同步、异步, 串行、并发 死锁的原因: 队列引起的循环等待. 1.2 dispatch_barrier_async 1.3 dispatch_grup 2. NSOPeration/NSOPerationQueue …

Block 必须了解的姿势

Block 必须了解的姿势 1. 什么是 Block? block 是将函数及其上下文封装起来的对象. 包含 isa 指针,isa 指针是对象的标志 FuncPtr 函数指针, block 用函数指针来指向对于的实现 2. 什

关于内存管理的底层原理

关于内存管理的底层原理 1. 内存布局 内存区 高地址(0xc0000000) 栈区(stack) 堆区(heap) .bss (未初始化的全局变量) (程序) .data (已

RunTime 基础知识

RunTime 基础知识 1. 数据结构 1.1. objc_object objc_object 是结构体 我们实际使用的对象都是 id 类型的,id 类型的对象对应到 runtime 当中实际就是 objc_object 1.1.1 objc_object 主要包 …

OC 知识

OC知识 1. 分类 1.1. 你用分类都做了哪些事情? 用分类来声明私有方法 用分类来分解体积庞大的类文件 (机器学习相关就是这样做的) 把 Framework 的私有方法公开 1.2. 分类

UI 视图知识回顾

UI 视图知识回顾 1. TableView 1.1. 重用机制 当前队列 重用队列(重用池) 1.2. 数据展示Load ①. 如何解决TableView 在多线程的情况下对数据的修改和访问问题

GCD 的常规用法与底层原理

GCD 的常规用法与底层原理 以一种非常简洁的记述方法,实现了极为复杂繁琐的多线程编程. 只需要定义想执行的任务并追加到适当的 Dispatch Queue 中,GCD 就能生成必

RSA 与 ECC

RSA 与 ECC RSA 利用最大素数分解原理 1. p,q 第一步:选取 p 和 q. 越大越好。 p, q 为不相等的质数. 2. n 第二步:n = p * q 3. m 第三步:计算m。 m 是小于或者等于 n

关于启动优化需要知道的一些事

关于启动优化需要知道的一些事 1. 时间构成 T1 点击 APP 到执行 main 函数. T2 从 main 函数开始到 appDelegate 的 didFinishLaunchingWithOptions、

RunLoop 梳理

RunLoop 梳理 了解 RunLoop 之前不妨问自己这几个问题: 什么是 RunLoop 与 线程 有什么关系? 有哪些类型的 RunLoop 分别作用是什么? 对外的 API 有哪些,其内部逻辑是怎样的? 底层原理 是