Runtime的方法交换

2017-08-07  本文已影响0人  成长的船

Runtime知道如何用runtime交换方法,但是思考了下,没有找到非常好的实际价值,可能实力不够吧。先写下来,作为积累。


+(void)load
{
//class_getClassMethod(<#__unsafe_unretained Class cls#>, <#SEL name#>) //获取方法名
//method_exchangeImplementations(<#Method m1#>, <#Method m2#>)          //交换方法

Method system_imageNamed = class_getClassMethod([UIImage class], @selector(imageNamed:));

Method yh_imageNamed = class_getClassMethod([UIImage class], @selector(yh_imageNamed:));

method_exchangeImplementations(system_ImageNamed, yh_ImageNamed);

}

+ (UIImage *)yh_imageNamed:(NSString *)name
{
    UIImage * image = [UIImage yh_imageNamed:name];
    if (image == nil) {
        NSLog(@"加载的图片名为空");
     }
    return image;
}

@end


再一个,在+(void)load这个方法里写方法的交换,原因是load方法只会执行一次,刚好符合交换方法的要求。


上一篇下一篇

猜你喜欢

热点阅读