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方法只會執行一次,剛好符合交換方法的要求。