在功能开始前按两次 Objective-C

Press twice for before function starts Objective-C

抱歉,如果标题有点草率或令人困惑,我会尝试更详细地解释它。

我的应用程序中有一个功能,允许用户每天只使用它 10 次。下面的代码处理每天的计数,这实际上工作得很好,除了用户总是必须在新循环被调用之前按两次。

我认为这与 fabs 功能有关,或者用户必须在新循环中按两次的原因是什么?

-(void)dailyCount:(id)sender{
    NSString *kFirstLaunchDateKey = @"tenPerDay";
    NSDate *firstLaunchDate = [[NSUserDefaults standardUserDefaults] objectForKey:kFirstLaunchDateKey];
    NSInteger count = [[NSUserDefaults standardUserDefaults] integerForKey:@"perDay"];

    if (!firstLaunchDate) {
        [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:kFirstLaunchDateKey];
        [[NSUserDefaults standardUserDefaults] setInteger:count+1 forKey:@"perDay"];

        return;
    }

    NSTimeInterval diff = fabs([firstLaunchDate timeIntervalSinceNow]);
    if (diff > 60 * 60 * 24 * 1) {
        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"tenPerDay"];
        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"perDay"];
    }else{
        if (count % 11 == 0) {
            [UIAlertView showWithTitle:@"Daily Limit Exceeded"
                               message:@"Sorry, you can use this option only 10 times per day."
                     cancelButtonTitle:@"Ok"
                     otherButtonTitles:nil
                              tapBlock:^(UIAlertView *alertView, NSInteger buttonIndex) {
                                  if (buttonIndex == [alertView cancelButtonIndex]) {

                                  }
                              }];
        }else {
            // do something here... (Have to press twice on a new loop before it's getting called)

            [[NSUserDefaults standardUserDefaults] setInteger:count+1 forKey:@"perDay"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        } 
    }
}
-(void)dailyCount:(id)sender{

    NSString *kFirstLaunchDateKey = @"tenPerDay";
    NSDate *firstLaunchDate = [[NSUserDefaults standardUserDefaults] objectForKey:kFirstLaunchDateKey];

    if (!firstLaunchDate) {

        [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:kFirstLaunchDateKey];
        [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"perDay"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        [self counterNew];

        return;
    }

    NSTimeInterval diff = fabs([firstLaunchDate timeIntervalSinceNow]);
    if (diff > 60 * 60 * 24 * 1) {

        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"tenPerDay"];
        [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"perDay"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        [self counterNew];

    }else{


        [self counterNew];

    }
}

-(void)counterNew{

    NSInteger count = [[NSUserDefaults standardUserDefaults] integerForKey:@"perDay"];

    if (count > 10) {

        [UIAlertView showWithTitle:@"Daily Limit Exceeded"
                           message:@"Sorry, you can use this option only 10 times per day."
                 cancelButtonTitle:@"Ok"
                 otherButtonTitles:nil
                          tapBlock:^(UIAlertView *alertView, NSInteger buttonIndex) {
                              if (buttonIndex == [alertView cancelButtonIndex]) {

                              }
                          }];

    }else {


        //Do something here...

        [[NSUserDefaults standardUserDefaults] setInteger:count+1 forKey:@"perDay"];
        [[NSUserDefaults standardUserDefaults] synchronize];

    }
}