在iphone上,xml解析耗时且需要高效的方法

在iphone上,xml解析耗时且需要高效的方法,iphone,Iphone,如何调用主线程???我可以解析,但不能显示数据 - (void)viewDidLoad { //self.navigationItem.rightBarButtonItem = self.editButtonItem; self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"10.png"]]; [super viewDidL

如何调用主线程???我可以解析,但不能显示数据

- (void)viewDidLoad {
    //self.navigationItem.rightBarButtonItem = self.editButtonItem;
    self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"10.png"]];
    [super viewDidLoad];
  [NSThread detachNewThreadSelector:@selector(startTheBackgroundJob) toTarget:self withObject:nil]; 

      }


- (void)startTheBackgroundJob {  


    NSUserDefaults *getida = [NSUserDefaults standardUserDefaults];

        myIDa = [getida stringForKey:@"AppID"];

        NSLog(@"@BOOK MARK ");



        NSString *ubook = [[NSString alloc] initWithFormat:@"http://www.wapp=%@&action=show",myIDa];
        NSLog(@" bookmark %@",ubook);
        [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
        //NSString *outputString = [[NSString stringWithString:usearch] stringByAppendingString: UserText];
        ubook = [ubook stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


        NSLog(@"My string is  now =  %@", ubook);

        NSURL *url = [[[NSURL alloc] initWithString:ubook]autorelease];
        //NSURL *url=   [NSURL URLWithString:outputString];

            NSLog(@" bookmark URL IS  %@",url);

        NSXMLParser *xmlParser = [[[NSXMLParser alloc] initWithContentsOfURL:url] autorelease];

        //Initialize the delegate.
        XMLParserbookm *parser = [[[XMLParserbookm alloc] initXMLParser]autorelease];

        //Set delegate
        [xmlParser setDelegate:parser];

        //Start parsing the XML file.
        BOOL success = [xmlParser parse];
        if(success)
        {

            NSLog(@" xml parsed suucess");

            //[super viewDidLoad];

            [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;


            //[self searchTableView];   
            //mytimer4=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(wipe) userInfo:nil repeats:NO];
        }

        else{
            NSLog(@"eeror");
        }
        [NSThread sleepForTimeInterval:3];  
    [self performSelectorOnMainThread:@selector(makeMyProgressBarMoving) withObject:nil  waitUntilDone:NO];   // HOW TO CALL MAIN THREAD
    [pool release]

}
你可以试试看

  • 视图显示:
    ,在转到新视图后调用此方法。然后,至少可以切换到新视图,您应该确保屏幕上有东西在等待xml解析

  • 使用线程:将解析放到另一个线程中,然后在完成后回调主线程,这样就不会有任何阻塞

您可以尝试使用

  • 视图显示:
    ,在转到新视图后调用此方法。然后,至少可以切换到新视图,您应该确保屏幕上有东西在等待xml解析

  • 使用线程:将解析放到另一个线程中,然后在完成后回调主线程,这样就不会有任何阻塞


第二次穿线。这就是我在处理SOAP web服务调用时所做的,在调用从服务器返回之前不挂起显示器。`/[self-performSelectorOnMainThread:@selector(makeMyProgressBarMoving)with Object:nil waitUntilDone:NO];///如何调用主线程`这行是正确的,有什么问题吗?你有方法调用makeMyProgressBarMoving吗?是的,我添加了-(void)makeMyProgressBarMoving{[tableview reloaddata]},所以现在可以工作了,但我不知道这个过程是对还是错,多亏了线程。这就是我在处理SOAP web服务调用时所做的,在调用从服务器返回之前不挂起显示器。`/[self-performSelectorOnMainThread:@selector(makeMyProgressBarMoving)with Object:nil waitUntilDone:NO];///如何调用主线程`这行是正确的,有什么问题吗?你有方法调用makeMyProgressBarMoving吗?是的,我添加了-(void)makeMyProgressBarMoving{[tableview reloaddata]},所以现在可以工作了,但我不知道这个过程是对还是错,谢谢