添加子视图,延迟?

问题描述:

我真的不知道如何标题这个问题,但这是一个真正杀死我的东西: 在我的应用程序中,我有一个UITableView,UISegmentedControl和UINavigationBar。一旦UISegmentedControl获取其中一个选定的段,我想在UINavigationBar上显示UIActivityIndi​​catorView,然后解析一个xml文件并将结果呈现在表中。 除了一件事之外,一切正常,除了一件事情之外,活动指示器视图在解析器完成后被添加到uinavigationbar,即使在解析器初始化之前将UIIndicatorView添加到UINavigationBar的方法showLoading也会得到。 任何人都可以解释它吗?有什么我可能会失踪?也许你需要重新绘制UI? 谢谢 彼得添加子视图,延迟?

它看起来是你在主线程中解析你的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