我想使用这个迭代函数来检查一个数组,并用新数组存储结果,然后一次又一次地检查新数组......但是我不知道如何清除旧的无用数组所以可以释放内存。
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()
得到一个错误,说环境是一个静态的,所以我不能改变它。我的问题是如何从那些阵列中释放内存? 任何帮助都会很感激。
答案 0 :(得分:0)
在swift3中,函数参数是不可变的,所以为了更改你需要添加一个var并在其中分配的值,如下所示。
func checkEnvironment(environment: inout [MGLPolygon], seed: MGLPolygon) -> [MGLPolygon]?{
if check == false{
environment.removeAll()
return newEnv!
}
}