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

Object passed by reference will not exist. Swift

我有一个数组。

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. 使Generate_New_Array过程可取消,然后在开始新过程之前先取消旧过程。

  2. 使 Generate_New_Array 连续,这样当您对该方法进行后续调用时,它将首先完成调用。例如,您可以让此操作在串行队列上排队。

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