(十三) [OC高效系列]用方法调配技术调试黑盒方法

2016-08-14  本文已影响14人  修行猿

不多说直接上代码

@interface NSString (YXMethodExchange)

- (NSString *)yx_uppercaseString;
@end


@implementation NSString (YXMethodExchange)

- (NSString *)yx_uppercaseString{
    NSLog(@"执行uppercaseString之前");
    //这里看似会递归,但实际并不会,因为实际调用的是uppercaseString方法
    NSString *uppercaseString = [self yx_uppercaseString];
     NSLog(@"执行uppercaseString之后 获取到大写:%@",uppercaseString);
    return uppercaseString;
}
@end

调用场景代码

 Method up = class_getInstanceMethod([NSString class], @selector(uppercaseString));
 Method myUp = class_getInstanceMethod([NSString class], @selector(yx_uppercaseString));
 method_exchangeImplementations(up, myUp);
 [@"hellow" uppercaseString];

这样就能在指定的方法调用前后加上输出日志。可以很方便的对IOS中没有暴露的方法进行日志打印,方便调试。这就是黑盒调试。

上一篇 下一篇

猜你喜欢

热点阅读