Tag: 搅拌

Objective-C中的方法Swizzling

我读了一篇关于“Objective-C中的方法Swizzling”的文章 。 在这篇文章中,“方法Swizzing”的含义是交换两种方法的实现。 示例如下所示: – (void) logged_viewDidAppear:(BOOL)animated { [self logged_viewDidAppear:animated]; NSLog(@"logged view did appear for %@", [self class]); } + (void)load { static dispatch_once_t once_token; dispatch_once(&once_token, ^{ SEL viewWillAppearSelector = @selector(viewDidAppear:); SEL viewWillAppearLoggerSelector = @selector(logged_viewDidAppear:); Method originalMethod = class_getInstanceMethod(self, viewWillAppearSelector); Method extendedMethod = class_getInstanceMethod(self, viewWillAppearLoggerSelector); method_exchangeImplementations(originalMethod, extendedMethod); }); } – (void) logged_viewDidAppear:(BOOL)animated { [self logged_viewDidAppear:animated]; […]