回顾OC

2024-02-05  本文已影响0人  fcf7850dd33e

1、OC的消息转发机制

1、消息查找:从方法缓存中找方法,找不到去方法列表中找,找到了将该方法加入方法缓存,还是找不到,去父类里重复前面的步骤,如果找到底都找不到那么进入2

2、动态解析:看该类是否实现了resolveInstanceMethod:和resolveClassMethod:,如果实现了就解析动态添加的方法,并调用该方法,如果没有实现进入3

3、消息转发:

调用forwardingTargetForSelector:看返回的对象是否为nil,如果不为nil,调用objc_msgSend传入对象和SEL。

如果上面为nil,那么就调用methodSignatureForSelector:返回方法签名,如果方法签名不为nil,调用forwardInvocation:来执行该方法

4、一直没有处理成功,最后会报错

objc_msgSend

2、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条线程串行执行                    没有开启新线程,串行执行

     */

上一篇 下一篇

猜你喜欢

热点阅读