【问题标题】:Calling a function from another class in theos(logos) Jailbreak从 theos(logos) 越狱中的另一个类调用函数
【发布时间】:2013-07-04 22:43:36
【问题描述】:

我正在尝试从另一个类中的另一个类运行一个函数。

我想从班级SBAwayView 打电话给-(void)updateClock

我试过[[%c(SBAwayDateView) sharedInstance] updateClock];

我也试过[%c(SBAwayDateView) updateClock]; 但我无法让它工作。 (SpringBoard 崩溃,我处于安全模式)

下面是SBAwayDateView

    %hook SBAwayDateView
    -(void)updateClock
    {
    //do some stuff

   //run %orig;
      %orig;
    }
    %end

如何在下面的SBAwayView 类中运行-(void)updateClock

    %hook SBAwayView
    -(void)updateInterface
    {
    //do some stuff

    //How can I run -(void)updateClock here?

   //run %orig;
      %orig;
    }
    %end

提前致谢。

【问题讨论】:

  • [%c(SBAwayView) sharedInstance] 是否返回有效实例?

标签: iphone objective-c jailbreak theos logos


【解决方案1】:

SBAwayDateView 没有 sharedInstance 也没有 updateClock class 方法。

如果您使用的类不是单例,您需要在其他类中找到此类的有效实例 - 它可能包含在实例变量中或从某个方法返回。或者您可以挂钩 init 方法并自己保存某处实例。取决于你想做什么。

在您的情况下,SBAwayView 具有实例变量 SBAwayDateView *_dateHeaderView - 问题已解决

%hook SBAwayView
-(void)updateInterface
{
    //do some stuff

    SBAwayDateView* dateView = MSHookIvar<SBAwayDateView*>(self, "_dateHeaderView");
    [dateView updateClock];

    //run %orig;
    %orig;
}
%end

【讨论】:

  • 谢谢!当我查看标题时,它确实具有 updateClock 方法。 @creker
  • 我说的是类方法('+' 方法)。 SBAwayDateView 确实有 updateClock 实例方法('-' 方法)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多