当前位置:  开发笔记 > IOS > 正文

方法[load]是否需要调用[super load]

如何解决《方法[load]是否需要调用[superload]》经验,为你挑选了1个好方法。

我知道很多方法需要调用它的超类方法,有些方法不需要,

我正在寻找关于方法混合的方法.它在load方法中初始化,在教程中没有[super load].

我想知道它是错还是没有必要打电话[super load].

+ (void)load {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class class = [self class];

        // When swizzling a class method, use the following:
        // Class class = object_getClass((id)self);

        SEL originalSelector = @selector(pushViewController:animated:);
        SEL swizzledSelector = @selector(flbs_pushViewController:animated:);

        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);
        }
    });
}

#pragma mark - Method Swizzling

- (void)flbs_pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    dispatch_async(dispatch_get_main_queue(), ^{
        [self flbs_pushViewController:viewController animated:animated];
    });
    NSLog(@"flbs_pushViewController");
}

顺便说一句,此方法用于修复导航损坏.

我碰巧有时会重新出现这个问题,我调试了它,我认为这是关于线程的.所以我在制度方法中添加某些东西.

如果你能告诉某人导航损坏问题或这种方法调整,我也非常感激.



1> Martin R..:

NSObject文档 (重点添加):

一个类的+load方法被调用后,它的所有超+load的方法.

这意味着您无需[super load]从代码中调用.在load所有超类的方法已经被调用由Objective-C运行时之前,在子类中的方法被调用.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有