2010-10-15 64 views
1

我想知道如何在後臺運行任何方法...我正在製作應用程序,從互聯網上解析xml文件..文件很大..所以需要20-25秒來解析它並顯示在表視圖中...問題是,當我按下按鈕來解析文件..按鈕保持按下,直到文件被解析..所以20秒的按鈕仍然按下..它看起來很奇怪用戶..(用戶認爲像應用程序掛起..)所以我的想法是顯示活動指標,並在後臺運行解析方法...當解析結束停止指標,並顯示在表視圖結果..任何其他的簡單實現相同的方式..因此,該按鈕不會保持按下... ???iphone中的背景運行方法

回答

0

線程

  1. 創建新的線程:

    [NSThread detachNewThreadSelector:@selector(myParse) toTarget:self withObject:nil]; 
    
  2. 創建一個由新線程調用的方法:

    - (void)myParse { 
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    *** code that should be run in the new thread goes here *** 
        //sample 
        NSURL *url; 
    NSString* resourcePath = [[NSBundle mainBundle] resourcePath]; 
        resourcePath = [resourcePath stringByAppendingPathComponent:@"sample.xml"]; 
    url = [[NSURL fileURLWithPath:resourcePath] retain]; 
    [self parsingTheXMLAtUrl:url]; 
        [pool release]; 
    } 
    

看到iphone sdk example更多信息。

一切順利。

2

查看Apple的SeismicXML示例代碼,它使用NSOperation和NSOperationQueue在後臺線程中下載和解析XML。這樣你就可以在實際的應用環境中看到完整的實現。