4

私はSwift と Objective-C Runtimeに従っています。通常のメソッドで動作します。

私の理解では、init はクラス メソッドのようなものです。ということで、init をインスタンスとクラスメソッドとしてスウィズルしてみました。しかし、うまくいかないようです

Objective C を使用して動作させることができますが、Swift で動作させる方法を知りたいだけです

私の要旨から抜粋

dispatch_once(&Static.token) {
            let originalSelector = Selector("init:source:destination:")
            let swizzledSelector = Selector("ftg_init:source:destination:")

            let originalMethod = class_getClassMethod(self, originalSelector)
            let swizzledMethod = class_getClassMethod(self, swizzledSelector)

            let didAddMethod = class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))

            if didAddMethod {
                class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod))
            } else {
                method_exchangeImplementations(originalMethod, swizzledMethod);
            }
        }
4

2 に答える 2