Условно извикване на клас в блок Hook в THEOS/LOGOS

В моята настройка на THEOS закачам клас и успешно извиквам един от неговите методи.

Проблемът ми е, че името на метода се промени след актуализация на приложението, което променям.

В старата версия въпросният метод приема един аргумент (method:arg1), след което се актуализира, за да приема 2 аргумента (method:arg1:arg2). Засега кодът ми изглежда така

%hook className

- (void)method:arg1 {
    //
}

- (void)method:arg1:arg2 {
    //
}

%end

Тази настройка работи добре в новата версия, но води до срив на приложението в старата версия. Има ли начин да мога условно да извикам един от тези методи въз основа на версията на пакета ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"])?

Играл съм с #if и #endif, но не стигнах далеч.

Вашата помощ е много ценена.


person boudarbalat    schedule 21.04.2013    source източник


Отговори (1)


Ако endif са време за компилиране на макроси, а не време за изпълнение, както ви трябва.

Аз също уча лога на theos, но мисля, че трябва да използвате %group и %ctor{} с условие.

вижте тук: Как да използвам функцията %group в Теос/Логос?

person Yaro    schedule 09.05.2013
comment
Благодаря, че отделихте време за отговор. Всъщност намерих този отговор и разгледах някои съществуващи tweak.mm файлове с отворен код, за да видя как точно го използват други хора. но така и не успях да отговоря на собствения си въпрос. - person boudarbalat; 13.05.2013