theWrapper 0.0.1

theWrapper 0.0.1

测试测试
Lang语言 Obj-CObjective C
许可 BSD
发布最后发布2014年12月

未声明 维护。



  • Tomer Shiri

TheWrapper

一个 Objective C 工具,允许您给任何函数添加包装器。

什么?!

假设您有以下方法

//MyClass.m

-(void) foo {
  NSLog(@"My name is Mike");
}

使用 TheWrapper,您可以在运行时给 foo 添加包装器。只需在第一次调用函数之前添加以下代码即可。

//MyClass.m

#import "TheWrapper.h"

+(void) initialize {
    [TheWrapper addWrappertoClass:[MyClass class] andSelector:@selector(foo) withPreRunBlock:^(va_list args)
    {
        NSLog(@"Hi,");
    }
    andPostRunBlock:^id(id functionReturnValue, va_list args)
    {
        NSLog(@"Bye.");
    }];
}

现在,调用 foo 将会打印

[self foo];

//Hi,
//My name is Mike
//Bye,

原始函数的返回值可以通过 PostRunBlock 参数中的 functionReturnValue 获取。如果您想返回原始返回值,只需在 PostRunBlock 中返回它即可。

已知问题

  1. 不支持 arc
  2. 对一个仅在超类中实现的方法进行包装会导致 EXC_BAD_ACCESS。