美文网首页
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之零:应用场景(持续更新中...)

    一、前沿 本人是「知识」的「实用主义者」,只学习“有用”的知识。这个“有用”如何理解呢?首先自己感兴趣的,精神上得...

  • iOS知识点整理

    iOS知识点整理 持续更新中。。。 runtime相关 iOS 模块详解—「Runtime面试、工作」看我就 ? ...

  • Runtime 应用介绍

    Runtime应用 Runtime简直就是做大型框架的利器。它的应用场景非常多,下面就介绍一些常见的应用场景。 关...

  • iOS开发经验(14)-runtime

    目录 回顾类&对象&方法 OC的动态特性 Runtime详解 应用场景 Runtime缺点及Runtime常用函数...

  • runtime应用场景

    场景1 ----------- runtime 发送消息 -----------objc/msgSend 只有对象...

  • runtime应用场景

    在实际开发中,当第三方框架或者系统原生方法功能不能满足我们的时候,我们可以在保持系统原有方法功能的基础上,额外增加...

  • iOS Runtime 和 RunLoop

    文章侧重写Runtime,因为Runtime偏应用多一些,在实际使用中用到的场景较多,开发中可以帮我我们解决大量的...

  • Runtime 其他相关

    Runtime常用场景 Runtime的应用都有哪些常用场景呢? 查看私有成员变量 字典转模型 替换方法实现 Ru...

  • Runtime全面剖析之原理篇

    如果想了解Runtime的实际应用请看Runtime全面剖析之简单使用 一:Runtime简介二: Runtime...

  • iOS runtime 应用场景总结

    iOS runtime 应用场景总结 场景1. 动态分类关联属性场景2. hook/Method Swizzlin...

网友评论

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

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