美文网首页
runtime开启与关闭

runtime开启与关闭

作者: tom__zhu | 来源:发表于2020-12-08 11:15 被阅读0次

背景需求:APP启动之后要做ping -c 5 hostA 与 ping -c 5 hostB操作,并计算出min、avg、max耗时与方差。

期望效果:在封装的启动方法中调用自己封装的startPing接口,通过performSelector:withObject:afterDelay重复调用ping:host:callback,最终根据每次ping结果计算耗时相关数据。
实际效果:ping方法没有被重复调用。


分析原因:startPing接口在子线程中被调用,子线程没有runloop,而performSelector:withObject:afterDelay正常执行需要有runloop
问题处理:在ping:host:callback方法调用CFRunLoopRun()。
期望效果:pingHostA与pingHostB都可以正常执行callback。
实际效果:pingHosB没有执行


分析原因:CFRunLoopRun()会让ping:host:callback循环执行,堆栈无法执行到pingHostB。
问题处理:在pingHostA的callback中执行CFRunLoopStop(CFRunLoopGetCurrent()),用以结束当前循环
期望效果:pingHostB可以执行callback。
实际效果:pingHostB正常执行callback。

流程图:


总结:
1、子线程执行performSelector:withObject:afterDelay需要开启runloop
2、开启runloop方法:CFRunLoopRun()
3、关闭runloop方法:CFRunLoopStop(CFRunLoopGetCurrent())

相关文章

  • runtime开启与关闭

    背景需求:APP启动之后要做ping -c 5 hostA 与 ping -c 5 hostB操作,并计算出min...

  • 开启与关闭

    无论城南还是城北 城东还是城西 已没有防御的大门 门前装饰狮子和石像 也没有禁止入内的威胁 某一扇门永远关上 又将...

  • 端口关闭与开启

    华为MA5680T SCUN板卡: config->interface scu 0/[板卡]->shutdown ...

  • DNS开启与关闭

    DNS关闭与开启 Centos情况下 配置文件:/etc/sysconfig/network-scripts/if...

  • 进程安全退出

    正常关闭 系统关机:操作系统会自动关闭进程? 异常关闭: kill -9 Runtime.halt() 断电 系统...

  • wireshark 抓包

    wireshark 抓包 无权限 开启和关闭 无权限 开启关闭 开启 xxx表示手机的UUID2、关闭

  • 13:Mac的rootless配置

    一、开启root 每次更新mac都要自动关闭root用户,开启的root用户如下: 开启【系统偏好与设置】,选择【...

  • iOS开启与关闭侧滑返回手势

    开启与关闭某ViewController 的侧滑返回手势,注意开启时,一定在viewWillDisappear中去...

  • mac Rootless 关闭与开启

    苹果在全新的 OS X El Capitan 10.11 10.12系统上已经使用了 Rootlees 然后你会发...

  • 开启关闭⏲️

    NSTimer 的初始化方法 < 一 > 现在做个比喻:可以把调度一个计时器与启动汽车的引擎相比较。调度的计时器就...

网友评论

      本文标题:runtime开启与关闭

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