美文网首页
RunTime之零:应用场景(持续更新中...)

RunTime之零:应用场景(持续更新中...)

作者: 双鱼子曰1987 | 来源:发表于2020-10-31 10:04 被阅读0次

    一、前沿

    本人是「知识」的「实用主义者」,只学习“有用”的知识。这个“有用”如何理解呢?首先自己感兴趣的,精神上得到满足;然后,对于工作有用;最好,对于现阶段人生规划和职业规划有用。
    原因很简单,本人记忆力不好,记不了太多东西,不常用的总是会不经意间忘了。再者,个人精力和时间有限,特别是建立了家庭,有了小孩,然后年龄一年年大了之后,更是如此。

    话说回来,本篇主旨是汇总Runtime的一些使用场景以便后续查阅

    二、Runtime的使用场景

    1、方法交换,即[Method Swizzling]

    • AOP编程

    • 用户埋点统,如页面事件等
      交换viewWillAppear:等方法,实现控制器生命周期检测,进而实现埋点。

    • 字体根据屏幕尺寸适配(所有的控件字体必须依据屏幕的尺寸等比缩放。)
      交换systemFontOfSize:方法,统一修改

    • 处理按钮或者手势的重复点击
      交换sendAction:to:forEvent:方法,里面保存上一次点击时间,做频控。

    • TableView、CollectionView 异常加载占位图
      交换reloadData方法,里面做判空处理。

    • 按钮点击区域太小问题

    • APM(应用性能管理)
      通过 Method Swizzling 替换 NSURLConnection , NSURLSession 相关的原始实现(例如 NSURLConnection 的构造方法和 start 方法),在实现中加入网络性能埋点行为,然后调用原始实现。从而来监控网络。
      New Relic:https://newrelic.com
      听云 APM:https://www.tingyun.com
      NetEaseAPM:http://apm.netease.com/
      ONE APM:https://www.oneapm.com/

    • 防止程序崩溃
      拦截容易造成崩溃的系统方法,然后在替换方法捕获异常类型 NSException ,再对异常进行处理。
      如,NSArray的越界操作方法、NSString的空导致crash、UIImage空异常等等。

      GitHub:chenfanfang / AvoidCrash
      GitHub:ValiantCat / XXShield

    2、Category类别动态添加属性

    3、为某个实例或者对象动态添加方法

    4、未识别方法名Crash的处理

    降低Crash的一个处理方式。

    5、自动归档和解档(NSCoding )

    6、数据与模型的ORM方案

    本人最喜欢Runtime的原因之一,大大提高开发效率,想想没有ORM方案的黑暗年代。

    7、私有库的私有属性或者私有方法

    不建议,经常导致一些不可预知的问题,可能为未来埋大坑。

    8、实现多继承

    强烈不推荐使用,多继承增加很大的复杂性,给维护造成很多困难。另一方面,多继承解决的问题,都可以通过协议编程和面向接口编程解决。现在很多主流语言都是单继承的。
    请即避免多继承!!!

    9、热修复

    例如JSPatch替换已有的OC方法实行等。
    关于热修复爱的人在于能及时解决线上问题,不至于重新发包。不过现在Apple给毙了,没话说,毕竟动了蛋糕了。

    10、MJRefresh的封装

    为UITableView\UICollectionView\UIScrollView等统计增加下拉上拉机制。

    11、主题切换或者换肤

    • 方案一:为所有的资源(image、video、gif、color、font、font-sizt等)定义统一唯一key,然后config配置文件统一切换。
    • 利用动态方法调用NSInvocation,替换某个类的颜色或者图片。
    • 利用方法替换,将某个资源或者字体颜色换成其他颜色。
      iOS通用换肤解决方案

    其他

    Runtime-iOS运行时应用篇
    iOS 开发:『Runtime』详解(二)Method Swizzling

    相关文章

      网友评论

          本文标题:RunTime之零:应用场景(持续更新中...)

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