1

为越狱设备开发。

我在这里寻找我的问题的灵魂。使用 NSUserDefaults 存储 UISwitch 状态,但人们说很多代码不起作用。

我正在使用 UISwitch 加载/卸载 iOS 的启动守护程序。我已经非常接近了,但开关状态不会保存。这是我使用的代码。

@synthesize toggleSwitch;

- (void)viewDidAppear:(BOOL)animated
{

[super viewDidAppear:animated];

if([[NSUserDefaults standardUserDefaults] boolForKey:@"switch"]) toggleSwitch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"];

}

- (void)switchValueChanged {
if (toggleSwitch.on) {
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:TRUE];
    switchlabel.text = @"Enabled";
    const char *onchar = [[NSString stringWithString:@"launchctl load -wF /System/Library/LaunchDaemons/com.launch.daemon.plist"] UTF8String];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];
    setuid(0); system(onchar);
    if (system(onchar) == 0){
        [[NSUserDefaults standardUserDefaults] setBool:self.toggleSwitch.on forKey:@"switch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    } else {
        [[NSUserDefaults standardUserDefaults] setBool:self.toggleSwitch.on forKey:@"switch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];}
} else {
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:TRUE];
    switchlabel.text = @"Disabled";
    const char *offchar = [[NSString stringWithString:@"launchctl unload -wF /System/Library/LaunchDaemons/com.launch.daemon.plist"] UTF8String];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];
    setuid(0); system(offchar);
    if (system(offchar) == 0){
        [[NSUserDefaults standardUserDefaults] setBool:self.toggleSwitch.on forKey:@"switch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    } else {
        [[NSUserDefaults standardUserDefaults] setBool:self.toggleSwitch.on forKey:@"switch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE]; }
}

bool 值写在我的应用 plist 中。我似乎不知道我做错了什么。我从没有运气的溢出问题中拼凑了一些例子。不管命令是否失败,交换机都应该保存。

有人可以解释并告诉我应该编辑什么。这一直让我发疯。

4

0 回答 0