从theos中的另一个类调用一个函数(logos)Jailbreak

时间:2013-07-07 13:08:58

标签: iphone objective-c jailbreak theos logos

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

我想从班级-(void)updateClock

中拨打SBAwayView

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

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

以下是SBAwayDateView

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

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

如何在-(void)updateClock课程中运行SBAwayView

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

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

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

提前致谢。

1 个答案:

答案 0 :(得分:4)

SBAwayDateView没有sharedInstanceupdateClock 方法。

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

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

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

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

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