0

我有一个NSMutableArray主要由我的 iOS 游戏中的主线程访问的。每 2-3 秒我需要在这个网格上执行一次昂贵的操作。我不需要修改网格。我只需要做一些计算并返回一个结果。如何在后台线程中高效安全地使用网格?

到目前为止,我只考虑复制网格并将其作为对象传递给performSelectorInBackground. 然而,这似乎是潜在的浪费。我还考虑过从后台线程访问网格的引用,并确保在后台线程完成处理之前主线程不会写入网格。然而,这感觉很冒险,我不确定这是否是一种常见的做法。

4

1 回答 1

0

这完全取决于如果游戏无法写入网格,是否必须停止/减速。如果是这样,那么它就违背了在后台运行它的目的。如果游戏可以在不写入网格的情况下继续正常运行,那么这是最好的选择。只要您确保在后台处理完成之前它不会写入,这并不危险。

如果游戏要慢下来,那么我会走复制路线。

这两件事都可以直接在网格类中处理(如果这是您正在处理的地方)。您可以有一种方法来“锁定”网格,并且可以让网格对象排队更改,直到处理完成。处理完成后,您可以遍历所有操作并应用它们。这样,即使网格被锁定,一切都可以正常进行。

于 2012-10-22T02:34:10.487 回答