1、OC的消息转发机制
1、消息查找:从方法缓存中找方法,找不到去方法列表中找,找到了将该方法加入方法缓存,还是找不到,去父类里重复前面的步骤,如果找到底都找不到那么进入2
2、动态解析:看该类是否实现了resolveInstanceMethod:和resolveClassMethod:,如果实现了就解析动态添加的方法,并调用该方法,如果没有实现进入3
3、消息转发:
调用forwardingTargetForSelector:看返回的对象是否为nil,如果不为nil,调用objc_msgSend传入对象和SEL。
如果上面为nil,那么就调用methodSignatureForSelector:返回方法签名,如果方法签名不为nil,调用forwardInvocation:来执行该方法
4、一直没有处理成功,最后会报错
objc_msgSend2、KVC/KVO
3、内存管理
4、Block :https://www.jianshu.com/p/4e79e9a0dd82
5、多线程
//多线程/锁/线程安全/线程同步/NSOperation
//GCD:
https://www.jianshu.com/p/2d57c72016c6
//锁: http://www.cocoachina.com/articles/34796?filter=rec
//锁:https://www.jianshu.com/p/ddbe44064ca4
//锁:https://www.jianshu.com/p/65dd76287673
//https://www.jianshu.com/p/6d6832e42936
//读写锁
/*
1、GCD 高级用法
串行队列 并行队列 主队列
同步 无新线程、串行执行 无新线程、串行执行 死锁
异步 开1条线程串行执行 没有开启新线程,串行执行
*/
网友评论