0

我真的不知道如何標題這個問題,但這是一個真正殺死我的東西: 在我的應用程序中,我有一個UITableView,UISegmentedControl和UINavigationBar。一旦UISegmentedControl獲取其中一個選定的段,我想在UINavigationBar上顯示UIActivityIndi​​catorView,然後解析一個xml文件並將結果呈現在表中。 除了一件事之外,一切正常,除了一件事情之外,活動指示器視圖在解析器完成後被添加到uinavigationbar,即使在解析器初始化之前將UIIndicatorView添加到UINavigationBar的方法showLoading也會得到。 任何人都可以解釋它嗎?有什麼我可能會失蹤?也許你需要重新繪製UI? 謝謝 彼得添加子視圖,延遲?

回答

0

它看起來是你在主線程中解析你的xml,所以它變得被UI變化阻塞。嘗試(例如,通過通過-performSelectorInBackground:調用你的分析方法)

編輯移動XML解析到單獨的線程:其實你(幾乎可以肯定),在應用程序中使用autorelease含蓄 - 儘可能多的標準函數會返回自動釋放的對象。當你在獨立線程上運行你的函數時,你需要在那裏創建對象來處理自動釋放對象並避免內存泄漏(參見文檔中的Autorelease Pools)。因此,您的parseXML函數必須如下所示:

- (void)parseXML{ 
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; 
    ... //xml parsing routines etc 
    [pool release]; 
} 
+0

嗨! 非常感謝您的回答,但是現在當我嘗試使用performSelectorInBackground解析時,我得到了一堆NSAutoreleaseNoPool錯誤,即使我沒有在應用程序中使用autorelease。 – dusker 2010-03-09 10:24:01

+0

嗨, 實際上出於一些奇怪的原因,這些錯誤也是關於主視圖的一些UI元素(對於我在其他類中調用解析器的引用)。 問候 – dusker 2010-03-09 11:24:18

+0

他們是什麼樣的錯誤?如果解決了活動指標和內存泄漏問題,最好在單獨的問題中詢問它們。 – Vladimir 2010-03-09 11:38:37