2

听说theos中有%group功能。根据我对此的理解,我猜它是为了在条件设置为真或者当您想要轻松启用或禁用它而不是使用 if() 时应用大量钩子。我说的是真的吗?如果满足条件,我该如何使用此功能?请帮助我,因为我真的需要这个功能,因为我的代码中有很多 if 和 else,使用 %group 而不是所有这些会容易得多!任何意见是极大的赞赏!

4

2 回答 2

2

我找到了答案;

  1. 你可以%group thegroupname在 a 之前使用,%hook但记得在%end之后放两个。
  2. 在你需要的时候%ctor可以打电话%init(thegroupname);

希望这对某人有帮助!顺便说一句,该%init()功能可以在任何地方使用,甚至在%hook.

%group MessagesApp

%hook CLASS_TO_HOOK

- (id)FUNC_TO_HOOK {
    return %orig;
}

%end

%end //Don't forget your second end.

%ctor {
    if (TRUE) {
        %init(MessagesApp);
    }
}
于 2012-09-30T12:46:36.733 回答
0

添加答案以进一步澄清,使用如下:

%group iOS8
   %hook IOS8_SPECIFIC_CLASS
          // your code here
   %end // end hook
%end // end group ios8

%group iOS9
   %hook IOS9_SPECIFIC_CLASS
          // your code here
   %end // end hook
%end // end group ios9


%ctor {
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
        %init(iOS9);
    } else {
        %init(iOS8);
    }
}
于 2015-10-29T14:58:19.767 回答