本文是 『Crash 防护系统』系列 第一篇。
这个系列将会介绍如何设计一套 APP Crash 防护系统。这套系统采用 AOP(面向切面编程)的设计思想,利用 Objective-C语言的运行时机制,在不侵入原有项目代码的基础之上,通过在 APP 运行时阶段对崩溃因素的的拦截和处理,使得 APP 能够持续稳定正常的运行。

通过本文,您将了解到:

  1. Crash 防护系统开篇
  2. 防护原理简介和常见 Crash
  3. Method Swizzling 方法的封装
  4. Unrecognized Selector 防护
    4.1 unrecognized selector sent to instance(找不到对象方法的实现)
    4.2 unrecognized selector sent to class(找不到类方法实现)

文中示例代码在: bujige / YSC-Avoid-Crash


阅读全文 »

本文用来介绍 iOS 开发中,如何通过『Runtime』获取类详细属性、方法。通过本文,您将了解到:

  1. 获取类详细属性、方法简述
  2. 获取类详细属性、方法(成员变量列表、属性列表、方法列表、所遵循的协议列表)
  3. 应用场景
    3.1 修改私有属性
    3.2 万能控制器跳转
    3.3 实现字典转模型
    3.4 改进 iOS 归档和解档

文中示例代码在: bujige / YSC-Class-DetailList-Demo


阅读全文 »

本文用来介绍 iOS 开发中『Runtime』中的黑魔法 Method Swizzling。通过本文,您将了解到:

  1. Method Swizzling(动态方法交换)简介
  2. Method Swizzling 使用方法(四种方案)
  3. Method Swizzling 使用注意
  4. Method Swizzling 应用场景
    4.1 全局页面统计功能
    4.2 字体根据屏幕尺寸适配
    4.3 处理按钮重复点击
    4.4 TableView、CollectionView 异常加载占位图
    4.5 APM(应用性能管理)、防止崩溃

文中示例代码在: bujige / YSC-Runtime-MethodSwizzling


阅读全文 »

本文用来介绍 iOS 开发中『Runtime』相关的基础知识。通过本文,您将了解到:

  1. 什么是 Runtime?
  2. 消息机制的基本原理
  3. Runtime 中的概念解析(objc_msgSend 、Class、Object、Meta Class、Method)
  4. Runtime 消息转发
  5. 消息发送以及转发机制总结
阅读全文 »

『学习之道』 是一本比较特别的书。它的作者是 乔希·维茨金,他 13 岁就获得了国际象棋大师称号,后来又在太极拳推手赢得了世界冠军。在这本书中,作者用自己的个人经历和感悟,以一种朴实无华的文笔向我们讲述在国际象棋和太极推手学习过程中,关于学习的艺术。

阅读全文 »

本文用来介绍 iOS 开发中 『Blocks』的底层原理。我将通过 Blocks 由 OC 转变的 C++源码来一步步解析 Blocks 的底层原理。

通过本文您将了解到:

  1. Blocks 的实质是什么?
  2. Block 截获局部变量和特殊区域变量
  3. Block 的存储区域
  4. Block 的循环引用

文中 Demo 我已放在了 Github 上,Demo 链接:传送门

阅读全文 »
0%