0

我真的不知道如何为这个问题命名,但有一件事情真的让我很生气:在我的应用程序中,我有一个 UITableView、UISegmentedControl 和 UINavigationBar。一旦 UISegmentedControl 选择了它的一个段,我想在 UINavigationBar 上显示一个 UIActivityIndi​​catorView,然后解析一个 xml 文件并将结果显示在一个表中。一切都按我的意愿工作,除了一件事,活动指示器视图在解析器完成后被添加到 uinavigationbar,即使在解析器初始化之前将 UIIndicatorView 添加到 UINavigationBar 的方法 showLoading 也是如此。谁能解释一下?有什么我可能会丢失的吗?也许用户界面需要重绘?谢谢彼得

4

1 回答 1

0

看起来您在主线程中解析了您的 xml,因此它因 UI 更改而被阻止。尝试将 xml 解析移动到单独的线程(例如,通过调用您的解析方法-performSelectorInBackground:

编辑:实际上你(几乎可以肯定)autorelease在你的应用程序中隐式使用 - 因为许多标准函数返回自动释放的对象。当您在单独的线程上运行函数时,您需要在NSAutoreleasePool那里创建对象来处理自动释放的对象并避免内存泄漏(请参阅文档中的自动释放池)。因此,您的 parseXML 函数必须如下所示:

- (void)parseXML{
   NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
   ... //xml parsing routines etc
   [pool release];
}
于 2010-03-09T09:58:31.727 回答