【问题标题】:NSXMLParser: how do I wait until loading has finished?NSXMLParser:我如何等到加载完成?
【发布时间】:2011-06-03 03:59:11
【问题描述】:

假设我正在使用 NSXMLParser 将关卡(显然存储为 XML 文档)加载到我的 iPhone 游戏中。 NSXMLParser 通过分配委托并在关键时刻向其发送消息来工作。我如何确保我的整个关卡在执行其他任何操作之前都已加载?我知道我可以让我的主类成为委托并实现 parserDidEndDocument,但这感觉很hacky。我的主班不必知道解析的完成方式!另一方面,如果我创建一个单独的类/委托来解析我的关卡,我的主类无法知道解析何时完成,除非它连续查询解析类或解析类向它发送消息。无论哪种方式,主类都将与解析类的实现相关联。

我是否可以在主类中隐藏所有这些事件驱动的业务,并让解析器在完成后返回关卡对象? (即,newLevel = [[GameLevel alloc] initFromXML:xmlfile],它会使用 NSXMLParser 加载关卡,然后在完成后以某种方式返回。)目前,我正在使用外部 DOM 解析器,但我正在很好奇如何使用 NSXMLParser 来完成。

对不起,如果这是一个愚蠢的问题——我对此有点陌生!

编辑:根据 NSXMLParser 类参考,“启动事件驱动的解析操作”的 parse 方法在成功时返回 YES,如果出现错误则返回 NO。这是否意味着它仅在解析完成后才返回?这将解决我的问题,因为我假设即使在 parse 方法返回之后解析也会继续。

【问题讨论】:

    标签: cocoa-touch ios


    【解决方案1】:

    NSXMLParser 阻塞直到解析完成。您无需执行任何操作,因为关卡将在 parse 方法返回后加载。

    【讨论】:

      猜你喜欢
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多