美文网首页
2023-05-24

2023-05-24

作者: lionnner | 来源:发表于2023-05-23 16:12 被阅读0次
    #import "UIViewController+LoadEvent.h"
    #import <objc/runtime.h>
    
    @implementation UIViewController (LoadEvent)
    
    + (void)load {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            Class class = [self class];
            
            SEL originalSelector = @selector(viewDidLoad);
            SEL swizzledSelector = @selector(swizzled_viewDidLoad);
            
            Method originalMethod = class_getInstanceMethod(class, originalSelector);
            Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
            
            BOOL didAddMethod = class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));
            
            if (didAddMethod) {
                class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
            } else {
                method_exchangeImplementations(originalMethod, swizzledMethod);
            }
        });
    }
    
    - (void)swizzled_viewDidLoad {
        // 在这里执行你想要的操作,用于检测 View Controller 的加载事件
        NSLog(@"ViewController loaded: %@", self);
        // 调用原始的 viewDidLoad 方法
        [self swizzled_viewDidLoad];
    }
    @end
    

    相关文章

      网友评论

          本文标题:2023-05-24

          本文链接:https://www.haomeiwen.com/subject/xrvxedtx.html