iphone,多线程

时间:2010-12-28 22:13:49

标签: iphone cocos2d-iphone

我的应用程序启动解析XML文件的2个线程,在主线程中我提出了一个条件: while(parse == YES) { nslog(“什么都不做”); } [tableview reloadata];

但是当我在函数“cellforpathatindex”中读取数组变量时 我得到一个错误:“我试着读一个空数组” 但当我首次亮相或睡觉时,主线程正常。 解析为finis时如何直接获取数组变量

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用两种常见的模式,并且通过让工作线程在其工作(XML解析)完成时告诉主线程来工作:

  • 当工作线程完成工作时,他们通过NSNotificationCenter
  • 发布通知
  • 定义一个委托协议,并在主线程中有一个类实现它。将该类的实例传递给工作线程 - 它将是一个委托。当工作线程完成工作后,他们会向代理发送一条消息(例如-parseFileDidFinish:

答案 1 :(得分:0)

@gjd nice ans :)第二个选项是@ user482611应该使用的选项。除非解析完成,否则不要在主线程上重新加载表,直到解析完毕。