После прочтения стольких сообщений о параллельном и параллельном я все же путаю то, что является правильным способом получения данных. Например, в моем проекте у меня есть кнопка для пользователя для извлечения данных. Мой код - это что-то вроде ниже.dispatch_async vs dispatch_sync в данных выборки. Swift
var array = [Int]()
func fetchData() {
....
....
response(objects: [object], error: NSError?) {
for object in objects {
array.append(object.number) // assume object.number return an Int
}
// confuse here. Should I use async here because I am worry if the user
// click the fetchData button more than one time, the append and make
// function will be happened at the same time. Or, is there anything I
// made a wrong assumption? I guess I need a serial operation. Correct?
dispatch_async(dispatch_get_main_queue()) {
makeCollectionView() // using the data in array
}
}
}
UPDATE
Пытался запустить этот код. 10000-19999 запускается после 0-9999. Кажется, второй асинхронный вызов не остановит первый асинхронный процесс для его работы.
dispatch_async(dispatch_get_main_queue(), {() -> Void in
for i in 0 ..< 10000 {
print(i)
}
})
dispatch_async(dispatch_get_main_queue(), {() -> Void in
for i in 10000 ..< 20000 {
print(i)
}
})
Замечательный ответ, чтобы очистить от путаницы. Thanks –
Opps. Еще один вопрос. Если я вызову dispatch_async (queue) {makeCollectionView()} дважды, второй makeCollectionView будет запущен сразу после первого или второго, который немедленно остановит первый и запустит? если он немедленно остановит первый, есть ли какая-либо функция, которую я могу поставить в качестве первой задачи в очереди? –
Обновлено некоторая информация –