CJJBlockHook 1.0.3

CJJBlockHook 1.0.3

JimmyCJJ--verbose 维护。



CJJBlockHook

使 block 交换的实现变得前所未有地简单

此库的诞生原因?原本是为了解决以下三个问题,进而分享实现的思路和解决方案

以下问题都是关于任意 void (^)(void) 形式的 block

  • 1. 实现以下函数,将 block 的实现修改为 NSLog(@"Hello world"),也就是说,在调用此函数后调用 block() 时,不调用原始实现,而是输出 "Hello world"
void HookBlockToPrintHelloWorld(id block){
    
}
  • 2. 实现以下函数,将 block 的实现修改为打印所有入参并调用原始实现
//
//比如
//      void(^block)(int a, NSString *b) = ^(int a, NSString *b){
//          NSLog(@"block invoke");
//      }
//      HookBlockToPrintArguments(block);
//      block(123,@"aaa");
//      //这里输出"123, aaa"和"block invoke"
//
void HookBlockToPrintArguments(id block){
    
}
  • 3. 实现以下函数,使得调用此函数后,之后创建的任意 block 都能自动实现第二题的功能
void HookEveryBlockToPrintArguments(void){
    
}