- (void)replaceMethod:(Class)aClass originalSelector:(SEL)originalSelector swizzledSelector:(SEL)swizzledSelector {
Method originalMethod = class_getInstanceMethod(aClass, originalSelector);
Method swizzledMethod = class_getInstanceMethod(aClass, swizzledSelector);
BOOL didAddMethod = class_addMethod(aClass,
originalSelector,
method_getImplementation(swizzledMethod),
method_getTypeEncoding(swizzledMethod));
if (didAddMethod) {
NSLog(@"已经添加了 添加方法 class_replaceMethod %@",NSStringFromSelector(swizzledSelector));
class_replaceMethod(aClass,
swizzledSelector,
method_getImplementation(originalMethod),
method_getTypeEncoding(originalMethod));
} else {
NSLog(@"没有添加成功,交换方法 method_exchangeImplementations %@",NSStringFromSelector(swizzledSelector));
method_exchangeImplementations(originalMethod, swizzledMethod);
}
}
iOS hook方法交换
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 一、Hook的实现:自己工程中交换 实例方法、类方法 1.新建一个项目工程2.创建一个类HookMgr,用来实现方...
- 第一部分:【很重要,这个必须先看】 runtime.h文件中有如下方法,该方法实现了动态添加属性的功能,这里说明一...
- iOS runtime 动态添加属性,方法,方法交换案例 动态添加属性 我之前写过分类的文章,说过,分类不能添加成...
- 本文Demo传送门:MethodSwizzlingDemo 摘要:编程,只了解原理不行,必须实战才能知道应用场景。...
