2

我知道如何检测应用程序是否第一次使用 NSUserDefault 打开:

BOOL didRunBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"didRunBefore"];

     if (!didRunBefore) {
      //Your Launch Code
      [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"didRunBefore"];
      [[NSUserDefaults standardUserDefaults] synchronize];

       }

问题:我想要一个永远的警报视图,解释它包含哪些功能,并且只在应用程序首次启动时打开此警报?

4

4 回答 4

10

作为 OOP 程序员,您可以创建一个通用的公共方法。

+ (BOOL)checkWhetherRunBefore:(NSString *)key
{
    return [[NSUserDefaults standardUserDefaults] boolForKey:key];
} 

+ (void)hasRunForMyClass:(NSString *)key
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:key];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

在您的 ViewController 中,您可以像这样在 viewWillAppear 或 viewDidAppear 中编码:

- (void)viewWillAppear
{
    if(![HelpController checkWhetherRunBefore:NSStringFromClass([self class])])
    {
        //do your thing
        [HelpController hasRunForMyClass:NSStringFromClass([self class])]
    }

}
于 2013-01-29T03:03:11.787 回答
1

您只需将代码放入 viewDidLoad

当应用加载您的视图时,viewDidLoad 只会运行一次。(内存不足除外)

下次在 viewDidLoad 中再次加载视图时,可以检查 bool didRunBefore

于 2013-01-29T02:48:17.440 回答
1

您可以使用任何您想要的密钥。

FirstViewController

BOOL didRunBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"FirstViewController_didRunBefore"];

if (!didRunBefore) {
    //Your Launch Code
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstViewController_didRunBefore"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

SecondViewController

BOOL didRunBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"SecondViewController_didRunBefore"];

if (!didRunBefore) {
    //Your Launch Code
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SecondViewController_didRunBefore"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
于 2013-01-29T02:49:02.290 回答
0

你必须需要检测应用程序首次启动,你可以像这样检测t

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
if (![defaults objectForKey:@"firstRun"])
  [defaults setObject:[NSDate date] forKey:@"firstRun"];

[[NSUserDefaults standardUserDefaults] synchronize];
You can then test for it later...

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];        
if([defaults objectForKey:@"firstRun"])           
{
  // do something or not...
}
于 2013-01-29T02:54:56.053 回答