- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self runtimeReplaceAlert];
}
// 利用runtime来替换展现弹出框的方法
- (void)runtimeReplaceAlert {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Method presentM = class_getInstanceMethod(self.class, @selector(presentViewController:animated:completion:));
Method presentSwizzlingM = class_getInstanceMethod(self.class, @selector(ox_presentViewController:animated:completion:));
// 交换方法实现
method_exchangeImplementations(presentM, presentSwizzlingM);
});
}
// 自己的替换展示弹出框的方法
- (void)ox_presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
if ([viewControllerToPresent isKindOfClass:[UIAlertController class]]) {
NSLog(@"title : %@",((UIAlertContr
利用RunTime拦截Alert
最新推荐文章于 2021-03-05 11:25:09 发布
本文详细探讨了如何借助RunTime在运行时动态拦截Alert的显示,通过修改方法实现来增强或监控应用程序的行为。通过对Objective-C的RunTime机制理解,我们将学习如何在不修改原有代码的情况下,实现在特定条件下的Alert拦截,以满足自定义需求或调试目的。
摘要由CSDN通过智能技术生成