0

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

我想-(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

提前致谢。

4

1 回答 1

4

SBAwayDateView没有也sharedInstance没有updateClock 方法。

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

在你的情况下SBAwayView有实例变量SBAwayDateView *_dateHeaderView- 问题解决了

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

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

    //run %orig;
    %orig;
}
%end
于 2013-07-08T07:51:34.493 回答