Swift 从GKGridGraph中删除GKGridGraphNodes数组的速度出人意料地慢

Swift 从GKGridGraph中删除GKGridGraphNodes数组的速度出人意料地慢,swift,path-finding,gamekit,Swift,Path Finding,Gamekit,我正在创建一个150 x 150GKGridGraph,用于*寻路 var graph = GKGridGraph(fromGridStartingAt: int2(0, 0), width: 150, height: 150, diagonalsAllowed: true) 然后,我循环遍历参考地图图像的像素,并将节点添加到要从图形中删除的数组中 func getWalls(navMap: [bool], width: Int, height: Int) -> [GKGridGraph

我正在创建一个150 x 150
GKGridGraph
,用于*寻路

var graph = GKGridGraph(fromGridStartingAt: int2(0, 0), width: 150, height: 150, diagonalsAllowed: true)
然后,我循环遍历参考地图图像的像素,并将节点添加到要从图形中删除的数组中

func getWalls(navMap: [bool], width: Int, height: Int) -> [GKGridGraphNode] {
     var walls = [GKGridGraphNode]()
     for(index, value) in navMap.enumberated() {
         if(!value) { continue }
         let x = index % width
         let y = index / width
         if let node = graph.node(atGridPosition: vector_int2(Int32(x),Int32(y))) {
                 walls.append(node)
         }
     }

     return walls
}
到目前为止,一切都正常,但一旦我尝试从图形中删除墙,我的程序就会挂起很长时间

 graph?.remove(walls)
让我惊讶的是,一旦图形设置好,网格上的*寻路运行得非常快。虽然我预计在如此大的网格上寻路可能会很慢,但我很惊讶简单地删除一大块节点会导致如此显著的性能下降


所以我的问题是,为什么从GKGridGraph中删除一组节点会导致这样的速度减慢,有没有更有效的方法来实现这个操作?

我也看到了同样的问题。