iOS 交换系统类方法

    SEL original = @selector(imageNamed:);
    SEL swizzle = @selector(sy_imageNamed:);
    
    /// 需要用objc_getMetaClass,直接用[self class]无效
    Class class = objc_getMetaClass(object_getClassName(self));
    
    Method originalMethod = class_getClassMethod(class, @selector(imageNamed:));
    Method swizzlingMethod = class_getClassMethod(class, @selector(sy_imageNamed:));
    
    BOOL didAddMethod = class_addMethod(class, original, method_getImplementation(swizzlingMethod), method_getTypeEncoding(swizzlingMethod));
    
    if (didAddMethod) {
        class_replaceMethod(class, swizzle, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
    } else {
        method_exchangeImplementations(originalMethod, swizzlingMethod);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容