通过引用传递的对象将不存在。迅速

时间:2015-06-18 18:45:23

标签: ios swift reference pass-by-reference

我有一个数组。

var array:[customType] = [] // pseudo code

func Generate_New_Array(){
    //initialization of generatedNewArray
    array = generatedNewArray
    for (index,element) in array{
         async_process({
         Update_Data_From_Web(&array[index])
         })
    }
    })
}

func Update_Data_From_Web(inout object:customType){
     download_process{
          object = downloadedData
     }
} 

问题是,如果我在Update_Data_From_Web为每个元素完成之前调用Generate_New_Array,我该怎么办?它们将值存储回数组中不存在的索引。如何避免这方面的问题。

1 个答案:

答案 0 :(得分:1)

您有几个选择:

  1. 使Generate_New_Array进程可取消,然后在开始新进程之前取消旧进程。

  2. 制作Generate_New_Array序列,以便在您对此方法进行后续调用时,它将首先完成调用。例如,您可以将此操作排入串行队列。

  3. 无论采用哪种方法,如果这是多线程代码,请确保将您的交互与模型对象同步(通过GCD队列或锁或其他)。