super performSelector: 解決調用父類私有方法的問題 ...
super performSelector: 解決objc調用父類私有方法的問題
Objc中[super performSelector: ...]並不會像其他語言一樣能良好的工作。super只是編譯器符號。
想要安全和快速的調用父類的私有方法應該是直接調用父類方法的函數地址:
Method md = class_getInstanceMethod(class_getSuperclass(self.class), @selector(XXXXX:)); IMP imp = method_getImplementation(md); void(*super_func)(id,SEL,Type0,Type1,Type2,...) = (void*)imp; super_func(self, @selector(XXXXX:), 參數1, 參數2, 參數3,... ...);