Example
func swizzleMethod(_ `class`: AnyClass, _ original: Selector, _ swizzled: Selector) {
if let original = class_getInstanceMethod(`class`, original),
let swizzled = class_getInstanceMethod(`class`, swizzled) {
method_exchangeImplementations(original, swizzled)
}
else { print("failed to swizzle: \(`class`.self), '\(original)', '\(swizzled)'") }
}
swizzleMethod(
UIViewController.self,
#selector(UIViewController.viewDidAppear(_:)),
#selector(UIViewController.viewDidAppear_x(_:))
)
public extension UIViewController {
@objc private func viewWillAppear_x(_ animated: Bool) {
print(Self.self, #function)
self.viewWillAppear_x(animated)
}
}