Stinger--实践实现特定实例对象的AOP

     在 iOS完整实践: 使用Libffi实现AOP 一文中,我们介绍了实现AOP的一种方式,通过解析目标方法的签名,使用ffi_prep_cif 和ffi_prep_closure_loc构造壳函数替换原函数实现,以感知原方法调用时机及捕...

A new story

Assuner ❤️ Byblair

Hook方法的新姿势--Stinger (使用libffi实现AOP )

前言    众所周知,使用runtime的提供的接口,我们可以设定原方法的IMP,或交换原方法和目标方法的IMP,以完全代替原方法的实现,或为原实现前后相当于加一段额外的代码。

(四) 使用Travis CI集成单元测试

前言在 git pre-push hook 实践一二 一文中,我们实践了如何使用pre-hook执行单元测试以影响push操作的结果。但这种方式也有不少缺点,如无法hook pr,无法在提交版本里记录和共享显示测试的结果。Travis CI作为g...

用代码理解ObjC中的发送消息和消息转发

今天我们主要以看代码写代码的形式聊聊消ObjC中的发送消息和消息转发。当我们向一个对象(实例对象、类对象)发送一条消息时,对象可能是处理不了的,结果就是程序发生crash。当然,通过消息转发可以预防crash。现在我们就带着几个困惑:消息发送和处...

(三) git pre-push hook 实践一二

  在 (一) 初探 iOS 单元测试 一文中,我们简单提到了执行xcodebuild test可以启动工程的单元测试并输出测试结果,但手动执行此类命令意义是不大的。我们需要的是,把一些测试和lint等命令写在脚本文件里,在代码提交、合并及打包等...