tweak 中如何使用未定义的类和该类中的方法

三种方式使用逆向出来的类和其中的函数

Posted by ldzSpace on September 6, 2018

前提: 我们在写tweak 时,有时候需要使用逆向出来的类和其中的函数,但是我们项目里并没有定义,因此他会报错,现在提供了三种方式:

1 @interface xxxx
自己去定义该类和其中的方法,然后引用这个头文件即可,但是这种方法比较笨

2 利用动态语言特性,动态获取该类 先获取到Class ,然后利用其创建类对象,再调用方法 [[objc_getClass(“FLEXManager”) sharedManager] showExplorer]; [objc_getClass(“SBStatusBarStateAggregator”) sharedInstance]) _setItem:3 enabled:NO]

还可以直接使用objc_msgSend,perfromSelector objc_msgSend(runtime, @selector(setName:), @”Test”);

3 利用logos 的语言 首先 定义 @class SSURLRequestProperties 然后通过 %c 来定义标识该类,即可调用任何方法,只要该类中存在的方法就运行就不会报错,否则运行时报错 SSMutableURLRequestProperties * rProperties = [[%c(SSMutableURLRequestProperties) alloc] initWithURLRequest:rq];