代码之家  ›  专栏  ›  技术社区  ›  dusker

添加子视图,会延迟吗?

  •  0
  • dusker  · 技术社区  · 16 年前

    我真的不知道该怎么称呼这个问题,但有件事让我很难过: 在我的应用程序中,我有一个uitableview、uisegmentedcontrol和uinavigationbar。一旦uisegmentedcontrol选择了它的一个段,我想在uinavigationbar上显示uiactivityindicatorview,然后解析一个xml文件并将结果显示在表中。 一切都按我所希望的那样工作,除了一件事,活动指示器视图在解析器完成后被添加到uinavigationbar,即使在解析器初始化之前将uiindicatorview添加到uinavigationbar的showloading方法得到了。 有人能解释一下吗?有什么我可能遗漏的吗?也许用户界面需要重新绘制? 谢谢 彼得

    1 回复  |  直到 16 年前
        1
  •  0
  •   Vladimir    16 年前

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

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

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