如何在objective-c中为每个用户的所有生命周期运行一次代码

时间:2014-07-03 08:24:03

标签: ios iphone objective-c nsuserdefaults

有没有办法只运行一次代码?不适用于每种用法。当用户下载应用程序并运行它时,代码将只运行一次而不再运行。

我尝试创建一个初始为0的整数,并将其保存到nsuerdefaults。

并在if语句检查中创建了这个特殊代码,如果它的0输入代码但是如果它不是0则不输入它,并且在if语句中我增加0并保存它以便它赢得'再次进入它。

但它没有成功

 NSInteger temp = [[NSUserDefaults standardUserDefaults] integerForKey:@"forOnce"];


if (temp==0) {

int k=0;

if (NSClassFromString(@"CTTelephonyNetworkInfo"))
{

CTTelephonyNetworkInfo *netInfo =[[CTTelephonyNetworkInfo alloc]init];
CTCarrier *carrier =[netInfo subscriberCellularProvider];


testUser[@"Carrier"]=[carrier carrierName];
//NSLog(@"carrier bu %@",[carrier carrierName]);




 }

    temp++;


    [[NSUserDefaults standardUserDefaults] setInteger:k forKey:@"forOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    }

代码是那样的

2 个答案:

答案 0 :(得分:2)

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"EXECUTE_ALREADY"])
{
        NSLog(@"ONCE");
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"EXECUTE_ALREADY"];
        [[NSUserDefaults standardUserDefaults] synchronize];
}

基本理念与您的基本理念相同。它有效。

答案 1 :(得分:0)

Try this method in AppDelegate.h

@property(nonatomic,assign)BOOL isFirst;


     - (BOOL) isFirstRun
    {
        Defaults = [NSUserDefaults standardUserDefaults];
        if ([Defaults objectForKey:@"isFirstRun"])
        {
            //if application running in second time
            isFirst=NO;
             NSLog(@"isSecondRun isfirst:%d",isFirst);
            return NO;
        }
        //if application running in first time
        isFirst=YES;
        NSLog(@"isFirstRun isfirst:%d",isFirst);

        [Defaults setObject:[NSDate date] forKey:@"isFirstRun"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        return YES;
    }



and check 

NSLog(@"isfirst:%d",[self isFirstRun]);

if(isFirst==1)
{
//Do your operations.
}