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