如何避免对象被解除分配?

时间:2015-07-27 14:15:34

标签: swift

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被释放。

我能做些什么来避免这种情况?

1 个答案:

答案 0 :(得分:1)

我认为您需要将oldArray参数声明为inout。如下:

//...
static func appendMissingObjToArray(inout oldArray:[AnyObject],newArray:[AnyObject]){
//...

然后你可以这样做(注意下面的&符号&

class01.appendMissingObjToArray(&myOldArray, newArray: myNewArray)
println(myOldArray) // will contain the appended result

像这样完成myOldArray(传递的数组)将被改变。因此,如果保留原件很重要,您可能需要传递原件的副本。