我有一个数组。
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,我该怎么办?它们将值存储回数组中不存在的索引。如何避免这方面的问题。
答案 0 :(得分:1)
您有几个选择:
使Generate_New_Array
进程可取消,然后在开始新进程之前取消旧进程。
制作Generate_New_Array
序列,以便在您对此方法进行后续调用时,它将首先完成调用。例如,您可以将此操作排入串行队列。
无论采用哪种方法,如果这是多线程代码,请确保将您的交互与模型对象同步(通过GCD队列或锁或其他)。