Theos - Как вызывать методы экземпляра из другого класса

В основном то, что я пытаюсь сделать, это назвать attemptDeviceUnlockWithPassword метод из SBDeviceLockScreenViewController"s lockScreenView метод. Как правильно вызвать метод экземпляра из другого класса?

%hook SBLockScreenViewController

-(void)lockScreenView:(id)view didScrollToPage:(int)page
{
    if (page==0)
    {
    //call attemptDeviceUnlockWithPassword:@"0000" appRequested:NO
    }
    %orig;
}

%end

%hook SBDeviceLockController

- (BOOL)attemptDeviceUnlockWithPassword:(NSString *)passcode appRequested:(BOOL)requested
{

    return %orig;

}

%end

1 ответ

Чтобы иметь возможность вызывать метод экземпляра, вам нужен экземпляр класса. Из заголовка SBDeviceLockController видно, что существует метод класса +(id)sharedController, Этот метод вернет экземпляр, для которого вы можете вызвать методы экземпляра.

В SpringBoard существует довольно много классов, которые следуют этому шаблону, когда метод класса возвращает экземпляр singleton (это называется шаблоном Singleton).

Вам нужно больше узнать об основах Objective-C, прежде чем приступить к разработке, попробуйте просто создать простое приложение. Документация Apple довольно хорошая ( попробуйте начать здесь), и в Интернете есть много других ресурсов (например, курс Stanford CS193P).

Другие вопросы по тегам