Men的博客

欢迎光临!

0%

截图

class = objc_class ->继承 objc_object
objc_class 内部:superClass ; cache; clss_data_bits_t bits

class_rw_t
class_ro_t
protocols —> lsit_array_tt 二维数组类型
properties
methods

method_t
名称 SEL
返回值、参数体 const char *types;
函数体 IMP
const char *types; type encoding
返回值 参数1.参数2,参数3

isa指向
class -》 subclass -〉subclass meta
继承关系
class->superclass->nsobject
subclass meta -> root class meta - >nsobject

消息传递
开始-缓存是否有-当前类方法列表中是否有 - 逐级父类方法列表
消息转发
动态添加-转发类给别的类-生成方法签名-处理方法-抛出异常

@dynamic
动态运行时语言将函数决议推迟到运行时
编译时语言在编译期进行函数决议

hash查找
给定值时对象内存地址,目标值是数组索引
f(ptr) = (untntptr_t) ptr % array.count;

retain实现
获取sidetable。
获取对象的引用计数
引用计数加一

retainCount实现 (默认是1的原理)
获取sideTable,默认count =1;
获取引用计数,与上SIDE_TABLE_RC_SHIFT

delloc
开始-》objc_root_dealloc->root_dealloc
判断是否能够释放
是否isa优化-〉是否有弱引用-是否有关联对象-是否有c++晰构器-是否有引用计数表
清除c++ object_cXXDestruct
清除关联对象 bobject_remove_assocations()

清除引用计数
清除弱引用 weak_clear_no_lock
清除引用计数 table.refcnts.erase
添加weak
objc_initWeak-storeWeak-weak_register_no_lock

CFRunLoop
pthread
currentMode
modes
commonModes - >集合
cmomonModeItems
CFRunLoopMode
name
sources0 需要手动唤醒
sources1 具备自动唤醒能力
observers
timers

runLoop - n个 model - n个 sources、timer、observer
三次握手
1.syn——–》
2.《——–syn,ack
3.ack———》
四次挥手
1.fin———〉
2.〈——–ack
3.《——–fin、ack
4.———ack
https
tls版本号,加密算法随机数 ——-》
《——商定加密算法、随机数、证书
客户端:验证证书
客户端:组装会话密钥
通过公钥对预主密钥进行加密—-》
服务端:通过私钥得到预主密钥
服务端:组装会话密钥
加密的握手消息————–〉
〈—————-加密的握手消息
UDP解析
12字节伪首部
8字节UDp首部
7字节数据
UDP复用分用
UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,
1.源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
2.目的端口:目的端口号,在终点交付报文的时候需要用到。
3.长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
4.校验和:检测UDP数据报在传输中是否有错,有错则丢弃。
TCP
无差错、不丢失、不重复、安序到达
超时重传、确认迟到、确认丢失
面向字节流
滑动窗口
发送窗口:发送缓存(最后被确认的字节-最后发送的字节)
接受窗口:接收缓存(下一个期望收到的字节)
拥塞窗口
慢开始-拥塞避免-拥塞堵塞(乘法减少)-慢开始—-
解决DNS劫持
httpDNS server
使用DNS协议向DNS服务器的53端口进行请求
使用HTTP协议向DNS服务器的80端口进行请求
长连接
client -长连接通道 - 长连接server — API server

session
发送信息 ———-》 记录用户状态,生成sessionid
《——————返回cookie 中携带sessid
发送信息,携带cookie,内容是sessid—》通过识别sessid
图片缓存框架
manager
内存、磁盘、网络
图片解码、图片压缩、解压缩
淘汰策略:以队列形式,先进先出的方式淘汰
如果缓存文件超过 maxCacheAge 中指定的时长,就会被删除掉。
maxCacheSize 控制 SDImageCache 所允许的最大缓存空间
RN数据流思想:多叉树
自顶向下遍历更新
自底向上反馈
包含dispatcher、stores、views、actions
依赖注入
中间层(业务A、业务B。。。。
AsyncDisplayKit
Layout:文本计算,试图布局计算
Rendering:文本渲染、图片解码、图形绘制
UIKit Object:对象创建、对象调整、对象销毁

AsyncDisplayKit原理
ASNode
view
node

block的copy
在arc环境下,编译器会根据情况自动将栈上的block复制到堆上
如果block copy到堆上,会调用_Block_objcet_assign
如果block移除内部会调用dispose函数,内部会调用_Block_objcet_disponse
设计模式
创建型模式:单例、 工厂方法
结构模式:代理、适配器、组合、装饰
行为模式:命令模式、观察者模式、责任链模式
通知:Notification_Map
key:notificationName value:observer
浅拷贝就是内存地址的copy,让目标对象指针和源对象指向同一片内存
可变对象的copy和mutablecopy都是深拷贝
不可变对象的copy是浅c拷贝,nutableCopy是浅拷贝
copy方法返回的s都是不可变对象

试图绘制
setNeedsDisplay
display
displayLayer
other works
CGBitmapContext
CoreGraphic API
CGBitmapContext
setContents

layer has delegate
yes:drawRect
no:drawInContext
calayer uploads backing store to GPU

source0
触摸事件
performSelector onThread
source1
基于port的线程间通信
系统事件捕捉
timers
nstimer
performselector withObject anterDelay
Observers
用于监听RunLoop的状态
UI刷新(beforeWaiting)

耗电量优化
尽量减少CPU、GPU功耗
少用定时器
优化IO操作
网络优化
减少压缩网络数据