我跟随Swift & the Objective-C Runtime,它适用于普通方法。如何在swift中调试init
我喜欢swizzle init方法,从我的理解来看,init就像一个类方法。所以我尝试使用swizzling init作为实例和类方法。但它似乎没有工作
我可以使它工作使用Objective C,只是不知道如何使它在斯威夫特工作
从我gist
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);
}
}
什么是你的类继承?我认为swizzling只能用于从NSObject继承的类或者使用'@ objc'定义为目标c类。 –
@CleverError我链接到我的要点在这个问题上,你可以看看 – onmyway133