Как использовать функцию%group в Theos / Logos?

Я слышал, что в теосах есть особенность%group. Из того, что я понял по этому поводу, я предполагаю, что это для применения множества хуков, если условие установлено как истинное или когда вы хотите легко включить или отключить его вместо использования if(). Это то, что я говорю, правда? И как я могу использовать эту функцию, если выполняется условие? Пожалуйста, помогите мне, так как мне действительно нужна эта функция, так как в моем коде много ifs и прочего, и было бы намного проще просто использовать%group вместо всего этого! Любые советы высоко ценится!

2 ответа

Я нашел ответ;

  1. Ты можешь использовать %group thegroupname перед %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);
    }
}

Добавив ответ для дальнейшего уточнения, используйте так:

%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);
    }
}
Другие вопросы по тегам