1、系统类的方法实现部分替换
Method m1 = class_getInstanceMethod([NSStringclass],@selector(lowercaseString));
Method m2 = class_getInstanceMethod([NSStringclass],@selector(uppercaseString));
method_exchangeImplementations(m1, m2);
log list:
(lldb)po [@"assAAAAss" lowercaseString]
ASSAAAASS
(lldb) po [@"sssKAAAss" uppercaseString]
ssskaaass
2、自定义类的方法实现部分替换
在这里要说到一个黑马的典型死循环(人称自己++自己)
题目:- (void)viewDidLoad {
[self methodSetImplementation];
[self test];
}
-(void)test{
[self test];
}
如题:- (void) methodSetImplementation {
Method method = class_getInstanceMethod([ViewController class],@selector(justLog1));
IMP originalImp = method_getImplementation(method);
Method m1 = class_getInstanceMethod([ViewController class],@selector(test));
method_setImplementation(m1, originalImp);
}
- (void) justLo
本文探讨了在Objective-C中如何通过方法交换来改变系统类的行为,以及如何在自定义类中进行方法实现的替换。通过具体的代码示例,展示了方法交换的使用方法和自定义类方法实现替换的技巧。
8551

被折叠的 条评论
为什么被折叠?



