我真的不知道如何标题这个问题,但这是一件真正让我失望的事情: 在我的应用程序中,我有一个UITableView,UISegmentedControl和UINavigationBar。一旦UISegmentedControl选择了其中一个段,我想在UINavigationBar上显示一个UIActivityIndicatorView,然后解析一个xml文件并将结果显示在一个表中。 一切都像我想要的那样工作,除了一件事,活动指示器视图在解析器完成后被添加到uinavigationbar,即使在解析器初始化之前将UIIndicatorView添加到UINavigationBar的方法showLoading也会获得。 有人能解释一下吗?有什么我可能会失踪?也许ui需要重新绘制? 谢谢 彼得
答案 0 :(得分:0)
看起来您在主线程中解析了xml,因此它会因UI更改而被阻止。尝试将xml解析移动到单独的线程(例如,通过-performSelectorInBackground:
调用解析方法)
编辑:实际上,您(几乎可以肯定)在您的应用程序中隐式使用autorelease
- 因为许多标准函数会返回自动释放的对象。当您在单独的线程上运行函数时,您需要在那里创建NSAutoreleasePool
对象来处理自动释放的对象并避免内存泄漏(请参阅文档中的Autorelease Pools)。所以你的parseXML函数必须如下所示:
- (void)parseXML{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
... //xml parsing routines etc
[pool release];
}