添加子视图,会延迟?

时间:2010-03-09 09:48:58

标签: iphone iphone-sdk-3.0 uinavigationcontroller uiactivityindicatorview

我真的不知道如何标题这个问题,但这是一件真正让我失望的事情: 在我的应用程序中,我有一个UITableView,UISegmentedControl和UINavigationBar。一旦UISegmentedControl选择了其中一个段,我想在UINavigationBar上显示一个UIActivityIndi​​catorView,然后解析一个xml文件并将结果显示在一个表中。 一切都像我想要的那样工作,除了一件事,活动指示器视图在解析器完成后被添加到uinavigationbar,即使在解析器初始化之前将UIIndicatorView添加到UINavigationBar的方法showLoading也会获得。 有人能解释一下吗?有什么我可能会失踪?也许ui需要重新绘制? 谢谢 彼得

1 个答案:

答案 0 :(得分:0)

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

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

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