Ios GCD而不是gameloop?

Ios GCD而不是gameloop?,ios,grand-central-dispatch,Ios,Grand Central Dispatch,我已经编写了一些事件驱动的iOS应用程序,但这并没有为我现在的工作做好充分准备,我需要一些建议 我有一个简单的策略游戏设计,我使用视图、动画块和手势识别器制作原型。有了棋盘、招式和基本的UI,我才刚刚开始创建AI玩家,并且意识到我根本不清楚最好的方法。我需要在不阻塞主线程的情况下生成AI移动事件和生成的动画。几年前,我可能会使用一种经典的gameloop模式,但我不想在iOS中使用这种模式,因为我觉得这不是一种可以在非游戏应用程序中使用的技术,我的目标之一是扩展我对如何构建iOS应用程序的理解

我已经编写了一些事件驱动的iOS应用程序,但这并没有为我现在的工作做好充分准备,我需要一些建议

我有一个简单的策略游戏设计,我使用视图、动画块和手势识别器制作原型。有了棋盘、招式和基本的UI,我才刚刚开始创建AI玩家,并且意识到我根本不清楚最好的方法。我需要在不阻塞主线程的情况下生成AI移动事件和生成的动画。几年前,我可能会使用一种经典的gameloop模式,但我不想在iOS中使用这种模式,因为我觉得这不是一种可以在非游戏应用程序中使用的技术,我的目标之一是扩展我对如何构建iOS应用程序的理解

我读过关于GCD的书,我的感觉是,我可以用GCD在主线程之外完成很多工作,但不清楚我将如何协调各个部分。例如,AI需要评估董事会,但每次参与者更改董事会时,当前评估都将无效。我是否设置队列来管理板状态?我是否将每个AI玩家放在一个队列中?当AI选择最佳移动时,中断AI的最佳方式是什么


是否有人对我的应用程序需要支持的体系结构有一个大概的描述?我正在寻找我可以在一般情况下使用的模式,而不仅仅是在游戏中。如果有人知道这样一件事,我可以尝试的一些工作示例代码将是完美的。谢谢

这可能对你有帮助。在这个答案中还有两个有用的链接:具体来说,这里的GCD部分有一些示例代码:谢谢你的提示,我看了几十篇帖子,错过了这篇,这是我见过的最清晰的一篇。这并不完全是我想要的,但它确实在我的脑海中唤起了一些想法,我认为我的问题的一半可以通过将我的数据模型放在一个后台队列中并将所有人工和AI输入发送到那里来解决,然后让该队列将UI更新发送到主队列。我觉得我需要的不仅仅是这些,但是这个想法值得一些快速原型,谢谢!到目前为止,我还没有一个完整的解决方案,但我想用我迄今为止的发现来更新这个问题。首先,UIView动画块很简单,但很有限,所以我已经开始过渡到CALayer动画,我相信这是一条路要走。第二,由于我还没有说服自己必须走CADisplayLink路线,我通过GCD使用了一个计时器,这一直运行良好。GCD相当不错,我一直在重新安排代码在主线程之外运行,并根据需要将块传递到主队列以进行UI更新。我还没有到那里,但正在取得进展。