gpt4 book ai didi

cocoa-touch - NSXML解析器: how do I wait until loading has finished?

转载 作者:行者123 更新时间:2023-11-29 05:06:55 25 4
gpt4 key购买 nike

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

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

抱歉,如果这是一个愚蠢的问题 - 我对此有点陌生!

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

最佳答案

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

关于cocoa-touch - NSXML解析器: how do I wait until loading has finished?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4590028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com