ios - 从我在 theos 中的钩子(Hook)类调用不同的类方法

标签 ios objective-c jailbreak theos

%hook FirstClass
 [self method2];
 %orig
%end

但是method2只能在不同的类中使用

在这种情况下我该如何调用它?

目前我所知道的:

  • 使用NotificationCenter通知二类加载method2
  • 与使用 %c 有一些关系,但不熟悉完整的解释

但是这太复杂了,有没有其他方法可以做到这一点

-- 更新

我尝试了 %c 但我得到了这个错误

Tweak.xm:86:48: error: class method '+class' not found (return type
  defaults to 'id') [-Werror,-Wobjc-method-access]

                                           ^~~~~~~~~~~~~~~~~~

此处应用的解决方案> THEOS: compiling error when calling method in other class (logos)

但是好像不行

最佳答案

要调用另一个类的方法,它必须是类方法(加号)。然后您可以执行 [%c(ClassName) method:]; 如果它不是类方法(减号),那么您将必须拥有该类的实例。有时您可以找到一个类的共享实例,然后对其使用方法。 [[%c(ClassName) sharedInstance].propertyWhichIsOfAClassYouActuallyWant 方法:]

关于ios - 从我在 theos 中的钩子(Hook)类调用不同的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28101534/

相关文章:

iphone - 保护 iPhone 上的文件

ios - 我如何在没有开发者帐户的情况下在越狱的 iDevice 上安装和测试我的应用程序?

iphone - 在不减慢 xcode 的情况下在 iPhone 应用程序中包含许多图像

objective-c - 处理 NSTextField 中的测量单位

ios - 如何仅为第一行更改 UITableView 的分隔符颜色?

objective-c - 任何适合设计师的存折设计工具

objective-c - C 函数与 Objective-C 方法?

iOS MobileSubstrate CFNotificationCenterPostNotification - 不工作

ios - 具有预实现委托(delegate)方法的子类对象

ios - iPhone 应用程序无法在 iPad 上运行