Swizzling UIImage init无法使用iOS Swift

问题描述 投票:0回答:1

我正在尝试UIImage.init(named:),但未调用init

extension UIImage {

    @objc public convenience init?(swizzledName: String) {
        self.init(named: swizzledName)

        /// Do something
        print("this is working")
    }

    static func swizzle() {
        guard let instance = class_getClassMethod(self, #selector(UIImage.init(named:))),
            let swizzledInstance = class_getClassMethod(self, #selector(UIImage.init(swizzledName:))) else { return }

        method_exchangeImplementations(instance, swizzledInstance)
    }
}

用法

UIImage.swizzle()
let image = UIImage(named: "avatar")

👆不起作用

ios objective-c swift uiimage method-swizzling
1个回答
0
投票
我不知道为什么它不能与convenience init方法一起使用。

但是您可以创建一个静态方法,然后使用该方法。

© www.soinside.com 2019 - 2024. All rights reserved.