方法欺騙 使用 runtime 進行兩個方法的交換
+ (void)load {
//擷取類方法
Method olld = class_getClassMethod([self class], @selector(URLWithString:));
Method new = class_getClassMethod([self class], @selector(AZ_URLWithString:));
//交換兩個方法的實作
method_exchangeImplementations(olld, new);
}
+ (instancetype)AZ_URLWithString:(NSString *)str{
NSURL *url =[NSURL AZ_URLWithString:str];
if (!url) {
NSLog(@"交換方法");
}
return url;
}