static func appendMissingObjToArray(var oldArray:[AnyObject],newArray:[AnyObject]){
for n in newArray{
var isExist = false
for o in oldArray{
if(n.isEqual(o)){
//exist
isExist = true
break
}
}
if(!isExist){
oldArray.append(n)
}
}
}
上面的函数是将newArray中的一些数据追加到oldArray中。 当这个功能完成后。从 oldArray 获取数据时,出现 BAD ACCESS 错误。所以我认为这是由于oldArray中新添加的对象已被释放并且newArray被释放。
我可以做些什么来避免这种情况?
最佳答案
我相信您需要将 oldArray 参数声明为 inout
。如下:
//...
static func appendMissingObjToArray(inout oldArray:[AnyObject],newArray:[AnyObject]){
//...
然后您可以执行以下操作(请注意下面的与号 &
:
class01.appendMissingObjToArray(&myOldArray, newArray: myNewArray)
println(myOldArray) // will contain the appended result
像这样完成myOldArray
(传递的数组)将被改变。因此,如果保留原件很重要,您可能需要传递原件的副本。
关于swift - 如何避免对象被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31655574/