Ios Swift中替换方法的实现

Ios Swift中替换方法的实现,ios,objective-c,swift,Ios,Objective C,Swift,我试图用父实现替换方法实现: // Get superclass's valueDisplayText() // XLFormSelectorCell is a parent of HCFormSelectorCell // HCFormSelectorCell - swift class // XLFormSelectorCell - obj-c class let impParent = class_getMethodImplementation(XLFormSelectorCell

我试图用父实现替换方法实现:

//  Get superclass's valueDisplayText()
//  XLFormSelectorCell is a parent of HCFormSelectorCell
//  HCFormSelectorCell - swift class
//  XLFormSelectorCell - obj-c class
let impParent = class_getMethodImplementation(XLFormSelectorCell.self, Selector("valueDisplayText"))
let method = class_getInstanceMethod(HCFormSelectorCell.self, Selector("valueDisplayText"))
method_setImplementation(method, impParent)
class_replaceMethod(HCFormSelectorCell.self, Selector("valueDisplayText"), impParent, method_getTypeEncoding(method))
而是在中用子类实现替换父类实现。 为什么以及如何实现预期目标


p.S:我这样做的原因是:我需要调用父类的隐藏方法(obj-c类)。还有其他方法可以做到这一点吗?

你说的“隐藏方法”是什么意思?你不需要在ObjC中调用私有方法就可以了。只要申报并打电话给他们就行了。(以上不是一种典型的swizzling方法。搜索“方法swizzling”可以获得很多关于它的讨论。当然,在生产代码中强烈反对这种方法,因为它非常脆弱。)@RobNapier在ObjC中这很简单,但是如何在swift中声明父类的方法?你说的“隐藏方法”是什么意思在ObjC中调用私有方法不需要swizzling。只要申报并打电话给他们就行了。(以上不是一种典型的swizzling方式。搜索“方法swizzling”可以获得很多关于它的讨论。当然,在生产代码中强烈反对这种方式,因为它非常脆弱。)@RobNapier在ObjC中这很简单,但是如何在swift中声明父类的方法呢?