Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS中缓慢的默认访问崩溃_Ios_Nsuserdefaults - Fatal编程技术网

iOS中缓慢的默认访问崩溃

iOS中缓慢的默认访问崩溃,ios,nsuserdefaults,Ios,Nsuserdefaults,我已经在iOS上编程3年了,大量使用核心数据。然而,我从未遇到过这样的碰撞,也不知道为什么会发生这种情况。当前的应用程序只有4个非常简单的视图控制器,保存到NSDEFAULT的时间只有5次左右。我感到困惑的错误是“对key ClientState的慢速默认访问耗时0.037632秒,容差为0.020000”。我已经注意到,在我的代码中,问题出在我的代码中。此外,这是在加载视图控制器很久之后。此过程在按下按钮后发生。最后,这种崩溃只发生了一半的时间,这意味着有时代码实际工作时没有崩溃 NSUse

我已经在iOS上编程3年了,大量使用核心数据。然而,我从未遇到过这样的碰撞,也不知道为什么会发生这种情况。当前的应用程序只有4个非常简单的视图控制器,保存到NSDEFAULT的时间只有5次左右。我感到困惑的错误是“对key ClientState的慢速默认访问耗时0.037632秒,容差为0.020000”。我已经注意到,在我的代码中,问题出在我的代码中。此外,这是在加载视图控制器很久之后。此过程在按下按钮后发生。最后,这种崩溃只发生了一半的时间,这意味着有时代码实际工作时没有崩溃

 NSUserDefaults *ab = [NSUserDefaults standardUserDefaults];
        NSString *frcrat = [ab objectForKey:@"frcrat"];

        NSString *lapper = [alertView textFieldAtIndex:0].text;

        spinner.hidden = NO;
        [spinner startAnimating];
        delem = NULL;
        delem = [[NSMutableArray alloc] init]; //Line after this line gives error Thread 1: Exc_bad_access (code = 1, address=0xe0bb2f85)
        NSString *urlString = [[NSString stringWithFormat:@"http://www.mywebsite.com/enum.php?fracat=%@&num=%@&sap=%@", frcrat, lapper, _sna]stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding ];
        NSXMLParser *Parser = [[[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]] autorelease];
        [Parser setDelegate:self];
        [Parser parse];

我假设此代码位于视图控制器初始化中的某个位置

您收到的警告意味着视图控制器加载时间过长,这显然是由于代码中的
initWithContentsOfURL:
调用造成的

正如您所看到的,
initWithContentsOfURL:
阻塞的,这意味着您永远不应该在主线程上调用它。您应该异步执行XML解析器初始化。比如:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSString *urlString = [[NSString stringWithFormat:@"http://www.mywebsite.com/enum.php?fracat=%@&num=%@&sap=%@", frcrat, lapper, _sna]stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding ];
    NSXMLParser *parser = [[[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]] autorelease];
    [parser setDelegate:self];
    [parser parse];
}

它甚至与nsuser默认值无关。那是因为弦乐。相反,我将该字符串保存在nsuserdefaults中,并在需要时将其重新加载为NSString*snameri。感谢apple debugger给了我一个不恰当的错误。

很有趣。虽然这不是在我的视图控制器初始化期间(它发生在从警报视图提交之后),但我将研究您的iniWithContentsOfURL阻止方法建议。它仍然给出了缓慢的默认错误。对不起,谢谢你的努力。