iOS动态运行时方法交换

来源:互联网 发布:dota 数据 编辑:程序博客网 时间:2024/06/10 04:20
- (void)viewDidLoad {    [super viewDidLoad];    Swizzle([self class], NSSelectorFromString(@"viewDidDisappear:"), @selector(viewDidDisappear_custom));}- (void)viewDidDisappear:(BOOL)animated{    NSLog(@"viewDidAppear");   }//方法交换void Swizzle(Class c, SEL orig, SEL new){    Method origMethod = class_getInstanceMethod(c, orig);    Method newMethod = class_getInstanceMethod(c, new);    if(class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod)))        class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));    else        method_exchangeImplementations(origMethod, newMethod);}- (void)viewDidDisappear_custom{    NSLog(@"ddd");    // This calls original dealloc method    //执行父类的方法    [self viewDidDisappear_custom];}

0 0
原创粉丝点击