Swift:在迭代函数中清除数组

时间:2017-07-29 13:06:21

标签: swift3

我想使用这个迭代函数来检查一个数组,并用新数组存储结果,然后一次又一次地检查新数组......但是我不知道如何清除旧的无用数组所以可以释放内存。

func checkEnvironment(environment: [MGLPolygon], seed: MGLPolygon) -> [MGLPolygon]?{
    var newEnv: [MGLPolygon]?
    var alien: MGLPolygon?
    var check = false
    for i in 0..<environment.count{
        if detectIntersect(poly1: seed, poly2: environment[i]) && check == false{
            check = true
            alien = seed
            newEnv?.append(alien!)
        }else{
            newEnv?.append(environment[i])
        }
    }

    if check == false{
        // error occurs on here  
        environment.removeAll()
        return newEnv!
    }else{
        checkEnvironment(environment: newEnv!, seed: alien!)
    }
    return nil
}
代码中的

environment.removeAll() 

得到一个错误,说环境是一个静态的,所以我不能改变它。我的问题是如何从那些阵列中释放内存? 任何帮助都会很感激。

1 个答案:

答案 0 :(得分:0)

在swift3中,函数参数是不可变的,所以为了更改你需要添加一个var并在其中分配的值,如下所示。

func checkEnvironment(environment: inout [MGLPolygon], seed: MGLPolygon) -> [MGLPolygon]?{
    if check == false{
     environment.removeAll()
     return newEnv!
    }
}