XML Parser阻止主线程和dispatch_async崩溃的应用程序

Vix大块头

我正在开发一个应用程序,在此应用程序中,我将XML数据加载到uitableview中,并且该表视图每隔5秒就会调用解析方法并重新加载uitable以加载新数据。一切工作正常,但5秒钟后开始解析时应用卡住了,所以我决定在解析方法中实现dispatch_async,但是此应用崩溃后,只要5秒钟后就可以重新加载应用了。这是我的代码。

- (void) Parse{
    previusCount = rssOutputData.count;
    rssOutputData = [[NSMutableArray alloc]init];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
     NSString *post =[[NSString alloc] initWithFormat:@"https://messages_%@.xml",[[NSUserDefaults standardUserDefaults] stringForKey:@"xmls_id"]];
     NSData *xmlData=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:post]];
     xmlParserObject =[[NSXMLParser alloc]initWithData:xmlData];
     [xmlParserObject setDelegate:self];
        dispatch_async(dispatch_get_main_queue(), ^{
     [xmlParserObject parse];
         [messageList reloadData];
         if (previusCount != rssOutputData.count) {
             NSInteger bottomRow = [rssOutputData count] - 1; // this is your count's array.
             if (bottomRow >= 0) {
      ///////getting to latest msg/////////////
                 NSIndexPath *indexPathnew = [NSIndexPath indexPathForRow:bottomRow inSection:0];
                 [self.messageList scrollToRowAtIndexPath:indexPathnew atScrollPosition:UITableViewScrollPositionTop animated:YES];
             }
         }
     });
    });
}

我将消息发送到xml数据文件的方法。

- (IBAction)sendClicked:(id)sender {
    [messageText resignFirstResponder];
    if ( [messageText.text length] > 0 ) {
        NSString *rawStr;
    if ([[NSUserDefaults standardUserDefaults] integerForKey:@"userType"] == 1) { 
        rawStr = [NSString stringWithFormat:@"data=%@&user_id=%@&session_id=%@", messageText.text, [[NSUserDefaults standardUserDefaults] stringForKey:@"therapist_id"],[[NSUserDefaults standardUserDefaults] stringForKey:@"xmls_id"]];
    } else{//////In case of Patient
        rawStr = [NSString stringWithFormat:@"data=%@&user_id=%@&session_id=%@", messageText.text, [[NSUserDefaults standardUserDefaults] stringForKey:@"patient_id"],[[NSUserDefaults standardUserDefaults] stringForKey:@"xmls_id"]];
    }
        NSData *data = [rawStr dataUsingEncoding:NSUTF8StringEncoding];

        NSURL *url = [NSURL URLWithString:@"http://do_add_message.php"];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

        [request setHTTPMethod:@"POST"];
        [request setHTTPBody:data];
        NSURLResponse *response;
        NSError *err;
        NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
        NSLog(@"responseData: %@", responseData);
        //////////////////////
        [self Parse];
    }

    messageText.text = @"";
}

我得到的错误是: 错误

糯米帕尔玛

打印您的数组。检查两次。我认为您得到的是一个空数组。在控制台中打印从服务器获取并解析的每个对象。这样您就会有主意。

更新:

只需在主线程上重新加载表数据,而不在其上解析数据。喜欢:

dispatch_async(dispatch_get_main_queue(), ^{
    [messageList reloadData];
});

将其他代码放在主线程之外。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS:当应用程序状态为UIApplicationStateBackground时,为什么不将dispatch_async运行到主线程?

来自分类Dev

Android应用程序从XML中打开InputStream时崩溃

来自分类Dev

xml布局在加载Android应用程序时崩溃

来自分类Dev

pyQt和线程应用程序崩溃

来自分类Dev

在WPF应用程序中显示和筛选XML数据

来自分类Dev

应用程序在启动时崩溃 -android.view.InflateException: Binary XML file line #0: Binary XML

来自分类Dev

将android:drawableTop添加到xml文件时,应用程序崩溃

来自分类Dev

将片段添加到 xml 会使我的应用程序崩溃 - 如何解决?

来自分类Dev

在iOS应用程序的dispatch_async中可以创建的最大任务数是多少

来自分类Dev

RAML 内联应用程序/xml 示例

来自分类Dev

从 JavaFX 应用程序读取 XML

来自分类Dev

Xamarin Android C#:使用xml资源文件夹和清单定义用于检测连接的USB设备崩溃的意图过滤器的应用程序

来自分类Dev

主线程在viewDidLoad中的并发队列上或方法内执行dispatch_async

来自分类Dev

主线程阻塞导致应用程序在iOS 8中崩溃

来自分类Dev

构建C#控制台应用程序正在编辑XML配置文件,并在启动时使应用程序崩溃

来自分类Dev

Android应用程序教程的content.xml和activity.xml文件具有与教程不同的代码

来自分类Dev

在其他设备中启动时应用程序崩溃二进制 XML 错误 - ANDROID

来自分类Dev

应用程序启动时崩溃,“二进制 XML 文件第 0 行:错误膨胀类”

来自分类Dev

Springboot REST应用程序应该接受并生成XML和JSON

来自分类Dev

Jersey演示应用程序中的MediaType.APPLICATION_XML和MediaType.APPLICATION_JSON

来自分类Dev

我如何压缩我的XML和Java代码以使我的应用程序运行更流畅

来自分类Dev

C#控制台应用程序XML注释和嵌入式注释

来自分类Dev

Sysprep.exe和Unattend.xml-产品密钥的自动应用程序不起作用

来自分类Dev

我如何压缩我的XML和Java代码以使我的应用程序运行更流畅

来自分类Dev

Android 应用程序中 XML 表中垂直和水平方向的组合

来自分类Dev

无法加载混合 XML 和 JavaConfig 的 Spring MVC 应用程序

来自分类Dev

解析崩溃报告阻止应用程序

来自分类Dev

在全局队列上用dispatch_async运行的块是否有可能在主线程上执行?

来自分类Dev

滚动“应用程序可能在其主线程上做太多工作”时,列表视图崩溃。

Related 相关文章

  1. 1

    iOS:当应用程序状态为UIApplicationStateBackground时,为什么不将dispatch_async运行到主线程?

  2. 2

    Android应用程序从XML中打开InputStream时崩溃

  3. 3

    xml布局在加载Android应用程序时崩溃

  4. 4

    pyQt和线程应用程序崩溃

  5. 5

    在WPF应用程序中显示和筛选XML数据

  6. 6

    应用程序在启动时崩溃 -android.view.InflateException: Binary XML file line #0: Binary XML

  7. 7

    将android:drawableTop添加到xml文件时,应用程序崩溃

  8. 8

    将片段添加到 xml 会使我的应用程序崩溃 - 如何解决?

  9. 9

    在iOS应用程序的dispatch_async中可以创建的最大任务数是多少

  10. 10

    RAML 内联应用程序/xml 示例

  11. 11

    从 JavaFX 应用程序读取 XML

  12. 12

    Xamarin Android C#:使用xml资源文件夹和清单定义用于检测连接的USB设备崩溃的意图过滤器的应用程序

  13. 13

    主线程在viewDidLoad中的并发队列上或方法内执行dispatch_async

  14. 14

    主线程阻塞导致应用程序在iOS 8中崩溃

  15. 15

    构建C#控制台应用程序正在编辑XML配置文件,并在启动时使应用程序崩溃

  16. 16

    Android应用程序教程的content.xml和activity.xml文件具有与教程不同的代码

  17. 17

    在其他设备中启动时应用程序崩溃二进制 XML 错误 - ANDROID

  18. 18

    应用程序启动时崩溃,“二进制 XML 文件第 0 行:错误膨胀类”

  19. 19

    Springboot REST应用程序应该接受并生成XML和JSON

  20. 20

    Jersey演示应用程序中的MediaType.APPLICATION_XML和MediaType.APPLICATION_JSON

  21. 21

    我如何压缩我的XML和Java代码以使我的应用程序运行更流畅

  22. 22

    C#控制台应用程序XML注释和嵌入式注释

  23. 23

    Sysprep.exe和Unattend.xml-产品密钥的自动应用程序不起作用

  24. 24

    我如何压缩我的XML和Java代码以使我的应用程序运行更流畅

  25. 25

    Android 应用程序中 XML 表中垂直和水平方向的组合

  26. 26

    无法加载混合 XML 和 JavaConfig 的 Spring MVC 应用程序

  27. 27

    解析崩溃报告阻止应用程序

  28. 28

    在全局队列上用dispatch_async运行的块是否有可能在主线程上执行?

  29. 29

    滚动“应用程序可能在其主线程上做太多工作”时,列表视图崩溃。

热门标签

归档