Я представляю вам три странных способа сделать это в +(void)load
. В любом случае, назовите свой метод MyCategory_method или около того.
- class_getMethodImplementation () и class_replaceMethod (). Сохраните старый IMP и позвоните ему напрямую. Вам необходимо получить кодировку типа метода. Обратите внимание, что вы можете просто использовать обычную функцию C тоже ...
- class_getInstanceMethod (), method_getImplementation (), method_setImplementation (). Как и выше, но вам не нужно получать кодировку типа метода.
- class_getInstanceMethod () для обоих методов, а затем method_exchangeImplementations (). Вызовите MyCategory_method, чтобы получить оригинальную реализацию. Это самый простой способ сделать это.
Иногда это единственный достаточно простой способ заставить его делать то, что вы хотите ...
РЕДАКТИРОВАТЬ: И делать это, только если вы знаете, что вы делаете!