0

基本上我想做的是attemptDeviceUnlockWithPasswordSBDeviceLockScreenViewController'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
4

1 回答 1

2

为了能够调用实例方法,您需要一个类的实例。您可以从SBDeviceLockController 标头中看到有一个类方法+(id)sharedController。此方法将返回一个实例,您可以在该实例上调用实例方法。

SpringBoard 中有很多类遵循这种让类方法返回单例实例的模式(这称为单例模式)。

在进行调整开发之前,您需要了解更多关于 Objective-C 的基础知识,尝试创建一个简单的应用程序。Apple 文档非常好(尝试从这里开始),互联网上还有许多其他资源(例如斯坦福 CS193P 课程)。

于 2014-03-26T10:55:34.810 回答