ios模拟器和设备首次运行代码每次显示

时间:2014-05-07 14:28:00

标签: ios uialertview nsuserdefaults

我的应用程序有一个欢迎屏幕,显示应用程序第一次运行。我最近更改了警报的文本,但是在新版本替换它之前,请注意旧警报屏幕显示一两秒钟。它也会在应用程序的每次发布时出现。它在我的iPhone和模拟器上完成。我从手机上删除了应用程序。我从模拟器中删除了它,并重置了内容和设置。我已经清理了应用程序。我试着清除模拟器缓存(派生数据),没有运气。我尝试重命名nsuserdefaults键和警报名称。旧警报仍显示在应用启动时,也无法点击。我必须等待它消失。

首次运行代码

-(void)viewDidLoad
{
  [super viewDidLoad];

  if (![[[NSUserDefaults standardUserDefaults] valueForKey:@"onetime"] boolValue]) {
    NSLog(@"first run");   //This only shows the first time so I know code is okay below
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"onetime"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    UIAlertView *onetime = [[UIAlertView alloc] initWithTitle:@"Welcome" message:@" -message here-" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

    [onetime show];
  }
}

我知道代码本身因为日志而没问题。我不明白为什么要显示旧警报或如何摆脱它。我相信它不会在新安装上发生,但我想确定一下。

修改

该应用已进行本地化,我重新加载了这些文件。清理,重建,重置内容和设置,现在应用程序第一次启动清理。每次在此之后它将显示1秒的新警报并消失。没有第一次运行的日志。警报图像以某种方式被缓存。此外,警报不是本地化的一部分。没有字符串文件或plist。刚刚在viewdidload中编码。如果没有在viewdidload中调用它会如何显示?

解决

我终于找到了问题。不断出现的旧屏幕是发布图像。有时它是简单的东西。它在viewdidload之前显示,这导致我检查它可能来自哪里。

1 个答案:

答案 0 :(得分:0)

如果日志显示一次,则问题出在其他地方。尝试清理项目(shift + command + K)然后再试一次。