我正在尝试调整 canPerformAction:withSender: UIResponder 的方法及其所有已覆盖此方法的子类。
我通过将原始实现存储在以类名作为键的字典中来做到这一点;并在调用原始实现之前在实现的混合版本中查找字典。
这在某些情况下似乎工作正常,但当原始实现调用 super 时失败。然后我的 swizzled 方法不断被调用,程序进入无限递归。
这里可能出了什么问题?
最佳答案
在 -original
与 -custom
调配后:
-(void)custom {
[self custom]; // calls -original
}
-(void)original {
[self original]; // calls -custom
}
也就是说,如果您在父类(super class)中调配了方法,objc_msgSendSuper 将做同样的事情:为自定义调用原始方法,为递归调用相反的方法。
-(void)custom {
[self original]; // calls -custom, makes recursion
}
-(void)original {
[self custom]; // calls -original, makes recursion
}
关于ios - 混合和 super ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11504133/