美文网首页
runloop和runtime总结

runloop和runtime总结

作者: 师景福 | 来源:发表于2024-08-23 10:53 被阅读0次

    1.runloop   作用:保持程序线程的持续运行;接受用户的交互,从而处理app的事件(事件响应,更新UI,识别手势,定时器,网络请求等),具有调用解耦(串行队列中进行一步操作回到主线程如下图)的作用,减少cpu的消耗,提高性能,用时运行不用就歇息。

    runloop针对线程一对一,每个线程对应一个runloop,我们不能创建runloop,都是系统创建好的runloop,项目中主线程的对应runloop是默认开启的,其余的需要我们进行创建线程而开启;也会根据线程结束runloop也销毁

    runtime  Runtime简称运行时,OC就是运行时机制,对于我们oc来说就是底层中我们对于某个object对应的函数,根据函数名称进行的调用;

    作用:消息发送机制就是objc_msgSend,objc_msgSend(object, @selector(xxx));

                 交换方法 我们项目中UIViewController +xxx 对于viewDidLoad等交换

        Method fromMethod = class_getInstanceMethod([self class], @selector(viewDidLoad));

        Method toMethod = class_getInstanceMethod([self class], @selector(xxxViewDidLoad));

       if (!class_addMethod([self class], @selector(xxxViewDidLoad), method_getImplementation(toMethod), method_getTypeEncoding(toMethod))) {

            method_exchangeImplementations(fromMethod, toMethod);

        }

    动态添加方法  初始化调用一个类,添加一个方法performSelector,在类中我们进行resolveInstanceMethod方法( resolveInstanceMethod作用:就知道哪些方法没有实现,从而动态添加方法)

    给分类添加属性  例如初始化 xxx =[[xxx alloc]init]; xxx.name =@'';

    字典转model:遍历模型中所有的属性,根据模型的属性名,去字典中查找key,取出对应的值,给模型的属性赋值。

    2.xcode 和测试工具

    自带的leaks测试内存泄露(一般的 self未弱引用(block)、循环引用、定时器视频)(我们测试我们页面的dealloc走没走,通知,移除部分注册的web,定时器视频关闭等)

    自带的crashes进行判断崩溃的地方Window -> Organizer进行查看

    三方sdk例如Bugsnag、友盟、bugly测试数据崩溃的数据日志记录流

    3、自定义控件

    进行基础控件的拓展,并且自定义对应app全局共用的特殊控件

    4.网络通信机制、socket通信、tcp/Ip 和http

    Socket:是一个数据传输的连接线;

    UDP:面向非连接的协议,传送数据不需要和服务器连接;只需要ip和监听端口,把数据传给网络就           可以。

    TCP:三次握手,

    众所周知,TCP在数据传输前需要经过三次握手,UDP却不需要做任何的准备即可进行数据传输,因此UDP不会引入建立连接的时延。

    这也是DNS运行在UDP而不是TCP上的主要原因。

    而HTTP协议之所以使用TCP,是因为对于HTTP协议来说,可靠性是至关重要的。

    5.im即时通许和直播软件、语音软件

    相关文章

      网友评论

          本文标题:runloop和runtime总结

          本文链接:https://www.haomeiwen.com/subject/sjorcjtx.html